关于Python实例属性与类属性的趣事。

Python的实例可以读取类属性,但类属性不属于实例属性。

今天测试了一下Python的__getattribute__实例读取属性的方法。

真的非常有意思,当一个实例读取类变量的时候还是通过__getattribute__的方式读取。

但当读取方法的时候,确不走__getattribute__读取,其实类里面的那些方法,根本来说就是类属性

只不过函数对象比较特殊,具有__get__方法,属于非数据的描述符。

这样理解就感觉思路往下走就对了,在对属性@property的数据也不会走__getattribute__的方法。

这样就可以理解__getattribute__,当实例读取非描述符性质的属性,不管是否是实例还是类属性。

只要该属性存在就通过__getattribute__读取。

猜你喜欢

转载自www.cnblogs.com/sidianok/p/12677427.html