聊聊python类中的self

在学习python类的时候会发现几乎无一例外的会传入参数self,self到底是什么呢?其实

self代表类的实例

如下:

class Test:
    def prt(self):
        print(self)
        print(self.__class__)
 
t = Test()
t.prt()

结果为

<__main__.Test object at 0x104b6d410>
<class '__main__.Test'>

也可以直接在类中保存self,如下

class Test:
    def func(self):
    	father = self
    	return father
 
t = Test()
father=t.func()
print(father==t)
print(father.func().func()) # 还可以无限套娃

结果为:

True
<__main__.Test object at 0x10fa3e390>

self不必非写成self

self也可以写成其他的比如this什么的,但是self意思更为明确而且约定俗成了。

self也不一定要传入

如果整个类中没有self那肯定是没有灵魂的,但是类中的一些方法可以允许不传入类,也就是静态方法,这时候就需要@staticmethod装饰一下:

class Test:
    @staticmethod
    def func(name):
    	print("name is",name)
 
t = Test()
t.func("john")

结果为:

name is john

你可能感兴趣的:(python3)