13.7 绑定和方法调用
首先,方法仅仅是类内部定义的函数(这意味着方法是类属性而不是实例属性)。
其次,方法只有在其所属的类拥有实例时,才能被调用。当存在一个实例时,方法才被认为是绑定到那个实例了。没有实例时,方法就是未绑定的。
最后,任何一个方法定义中的第一个参数都是变量self,它表示调用此方法的实例对象。
你必须在方法声明中放上self,但可以在方法中不使用实例(self)。如果你的方法中没有用到self,那么请考虑创建一个常规函数,除非你有特别的原因。毕竟,你的方法代码没有使用实例,没有与类关联其功能,这使得它看起来更像一个常规函数。
13.7.1 调用绑定方法
当你在实例中调用一个绑定的方法时,self不需要明确地传入了。这算是”必须声明self作为第一个参数“对你的报酬。当你还没有一个实例并且需要调用一个非绑定方法的时候你必须传递self参数。
13.7.2 调用非绑定方法
我们将在子类构造器中调用父类的构造器并且明确地传递(父类)构造器所需要的self参数(因为我们没有一个父类的实例)。
>>> class C(object): ... def __init__(self): ... self.att1 = 1 ... >>> class D(C): ... def __init__(self): ... C.__init__(self) ... >>> D() <__main__.D object at 0x00F8B250> >>> d=D() >>> d.att1 1 >>>