网站推广.NET

网站推广.NET

python self什么意思

来源:互联网

首先我们要搞明白Python的类中为要什么要用到self这个单词呢,为什么不用"zhangsan"、"lisi"这样的名字呢,这肯定有他的用意。

self代表类的实例,而非类。

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

执行结果如下:

<__main__.test><class></class></__main__.test>

从上面的例子中可以很明显的看出,self代表的是类的实例。而self.class则指向类。

立即学习“Python免费学习笔记(深入)”;

类中的方法第一个参数必须是 self ,不然实例无法正确调用类中的方法,也就是说,如果方法中第一个参数不是 self(广义的),那么这个方法是没有任何价值的,因为实例无法调用它,一个无法被调用的方法真不知道有什么用。

注意:把self换成this,结果也一样,但Python中最好用约定俗成的self。 

在继承时,传入的是哪个实例,就是那个传入的实例,而不是指定义了self的类的实例。

class Parent:    def pprt(self):        print(self) class Child(Parent):    def cprt(self):        print(self)c = Child()c.cprt()c.pprt()p = Parent()p.pprt()

运行结果如下:

<__main__.child><__main__.child><__main__.parent></__main__.parent></__main__.child></__main__.child>

解释:

运行c.cprt()时应该没有理解问题,指的是Child类的实例。

但是在运行c.pprt()时,等同于Child.pprt(c),所以self指的依然是Child类的实例,由于self中没有定义pprt()方法,所以沿着继承树往上找,发现在父类Parent中定义了pprt()方法,所以就会成功调用

python self