self与类方法

在Python中定义方法时,会经常用到self,如何理解self?其实很简单,只需要区分两个概念,“类变量”和“对象”,而self指代的是“对象”。

以代码说明,例如定义Person类:

class Person:
    def __init__(self,name):
        self.name = name
    
    def play(self):
        print('{} is playing'.format(self.name))

实例化一个对象

andy = Person('andy')

代码中的self是一个保存Person对象的变量,而play是一个属于Person类的函数,因此可以这样调用play函数:

>>> Person.play(andy)
andy is playing

在实例化对象的时候,程序就自动创建了andy的play方法,因此也可以这样调用:

>>> andy.play()
andy is playing

要注意的是,Person.play是Person中的函数,而andy.play是与andy绑定的方法,二者不是同一个实体:

>>> Person.play
<function Person.play at 0x000002B32A005940>
>>> andy.play
<bound method Person.play of <__main__.Person object at 0x000002B329F76B20>>
>>> andy
<__main__.Person object at 0x000002B329F76B20>

此外,在定义类方法时,用其它变量名代替self也是可以的,self并不是一个python关键字,例如:

class Person:
    def __init__(myself,name):
        myself.name = name
    
    def play(myself):
        print('{} is playing'.format(myself.name))
原文地址:https://www.cnblogs.com/bill-h/p/13800385.html