为什么要给每个方法都加入 self 作为参数?
class myClass:
def myFunc(self, name):
self.name = name
求解释!
为什么要给每个方法都加入 self 作为参数?
class myClass:
def myFunc(self, name):
self.name = name
求解释!
class myClass(object):
def myFunc(self, name):
self.name = name
a = myClass()
a.myFunc('yetone')
就相当于:
class myClass(object):
pass
func myFunc(self, name):
self.name = name
a = myClass()
myFunc(a, 'yetone')
现在明白 self 的意思了吧,self 就是指调用者本身。当实例对象 foo 调用其 bar 方法时:foo.bar()
在底层就是把 foo 作为函数 bar 的第一个参数进行调用而已。
至于为什么参数名非要叫 self,这只是一个推荐的规范而已。你可以起任何变量名。
我在这里对python类中的self做了尝试性讲解,不知道是否适合。请指点:https://github.com/qiwsir/ITArticles/blob/master/BasicPython/218.md
4 回答4.5k 阅读✓ 已解决
1 回答3.3k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
1 回答4.4k 阅读✓ 已解决
1 回答3.9k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
面向对象中静态方法与实例方法的区别,不加
self
声明方法为当前类的静态成员,使用myClass.myFun()
调用,如果添加self
则定义为类实例成员,这样调用从执行角度来讲,都能调用,但要更符合面向对象原则,则建议区分开,更进一步讲,如果某个行为与具体的实例关系不大时比如数据访问工具类的方法,则可以不加
self
定义为类成员,如果以多态的角度出发该行为与实例关系更紧密时,则需要加self