Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么必须将self传递给python实例方法?是否有理由通过其他途径?_Python_Oop - Fatal编程技术网

为什么必须将self传递给python实例方法?是否有理由通过其他途径?

为什么必须将self传递给python实例方法?是否有理由通过其他途径?,python,oop,Python,Oop,可能重复: 在Python中,实例方法必须将实例作为参数传递给它们,如: class Foo: def bar(self): print self.name 明确这一点的目的是什么?(是否只是隐式的

可能重复:

在Python中,实例方法必须将实例作为参数传递给它们,如:

class Foo:
    def bar(self):
         print self.name

明确这一点的目的是什么?(是否只是隐式的<显式的?)在什么情况下,您希望传递除“self”之外的内容?

Python实例方法只是绑定到实例的函数。调用时,实例始终将自身作为第一个参数传递

名称
self
只是一个惯例。你可以随便叫它什么。所以你可以这样做:

class Foo:
    def bar(s):
         print s.name

但不要这样做,因为这违反了惯例。:)

我想你可以随便叫它什么,它只是按照惯例的
self
。但是,当您进行方法调用时,python隐式地传递接收对象作为第一个参数。谢谢还有,看看我链接到了哪里。是的,我知道它可以是任何东西。我只是好奇为什么它是这样实现的,而不仅仅是实例方法的属性,它们可以访问实例(就像其他基于类的继承实现一样)。@futuraprime答案是因为Python实例方法只是绑定到实例的函数。如果不将实例作为参数,则不可能是真的。