Python语言中self参数应该如何理解,python语言self参数,为什么要给每个方法都加入
Python语言中self参数应该如何理解,python语言self参数,为什么要给每个方法都加入
为什么要给每个方法都加入 self 作为参数?
class myClass: def myFunc(self, name): self.name = name
求解释!
我在这里对python类中的self做了尝试性讲解,不知道是否适合。请指点:https://github.com/qiwsir/ITArticles/blob/master/BasicPython/218.md
class myClass(object): def myFunc(self, name): self.name = namea = myClass()a.myFunc('yetone')
就相当于:
class myClass(object): passfunc myFunc(self, name): self.name = namea = myClass()myFunc(a, 'yetone')
现在明白 self 的意思了吧,self 就是指调用者本身。当实例对象 foo 调用其 bar 方法时:foo.bar() 在底层就是把 foo 作为函数 bar 的第一个参数进行调用而已。
至于为什么参数名非要叫 self,这只是一个推荐的规范而已。你可以起任何变量名。
class OtherClass: def otherFunc(other, name): other.name = name
你想这样写也没问题呀,你开心就好 :)
python引用成员变量的方式,例如:obj.method(),obj使用了self参数来传递到method内部,method内部通过self来使用obj的成员。
面向对象中静态方法与实例方法的区别,不加self声明方法为当前类的静态成员,使用myClass.myFun()调用,如果添加self则定义为类实例成员,这样调用
c = myClass()c.myFun()
从执行角度来讲,都能调用,但要更符合面向对象原则,则建议区分开,更进一步讲,如果某个行为与具体的实例关系不大时比如数据访问工具类的方法,则可以不加self定义为类成员,如果以多态的角度出发该行为与实例关系更紧密时,则需要加self
编橙之家文章,
相关内容
- Python正则匹配问题求高手帮忙,python高手帮忙,这个正则
- Python分解质因数脚本源码纠错求助,python脚本源码,
- 股票与python的应用问题,提取csv制定时间段的数据内容,
- xadmin成功安装后django报错:Apps aren't loaded yet是什么原因
- Python下列表创建字典怎么实现,python列表创建字典,简单
- 实现win7查找指定程序安装目录的python方法,win7python,先
- Python有了asyncio和aiohttp在爬虫这类型IO任务中多线程/多
- 如何将flask安装扩展在ext包里面,flask扩展ext包,如图:
- Python哪个模块适合处理文中这种格式文件,,如题文件格
- PEP 8标准里不推荐len()判断list是否为空的原因,peplen,假
评论关闭