自我理解:
我认为 self 是你对一个类进行实例化后,从而产生的类对象。它并不是代表的类本身,而是实例化后的类对象!类本身的属性他是没有值的,但是,类对象的属性是有值的,这个值就是你进行类实例化时传入的实参。所以你可以用self调用你在类中写的函数和属性。
代码实例:
class Person:
# def __init__(self):
# print('这是相当于无参构造')
def __init__(self,name,age): #构造方法,默认加载,不需主动调用
print('这相当于有参构造')
self.name = name #等号后面的参数(name)是方法的形参传入的值
self.age = age
def showMasage(self):
print(self.name)
print(self.age)
p1 = Person('tom',18) #是相当于实例化了一个Person类,产生了一个单独(内存地址独立)的Person类对象,然后将实参传入对这个类对象进行初始化
p2 = Person('marry','15')
p1.showMasage()
p2.showMasage()
解释: 上面是我写的一个 Person 类,然后其中的__init__方法是python语言中的构造方法,第一个形参就是self,代表当前类实例化后的类对象,后面两个是我定义的两个参数,需要进行传参进行赋值,传入的值会在类实例化时对这个类对象的属性初始化。比如:我在下方实例化Person类给了p1,参数是“tom”和18,p2亦如此;所以可以说p1和p2相当于实例化后的类对象,下面我调用了showMasage()方法打印值。下面看一下输出:
图片中可以看出类的__init__方法分别被加载了一次,下方的showMasage()方法各自打印出了由各自self中的属性。
所以我认为 self 是你对一个类进行实例化后,从而产生的类对象。
有迷糊的地方请见谅,谢谢!