类属性指的是定义在class内部的,而实例属性是则与某个特定的实例(对象)有关。定义过于抽象了,看看例子。
目前的一切看起来很正常,但是如果类属性想要访问init方法构建的,属于每个实例的实例属性。
Python解释器会告诉你,Book这个类没有属性name。而这个就是实例属性和类属性最大的差别。不过还需要注意到的问题是:
我们修改了类属性num_pages,实例tricks,fluent也发生了改变。再看看:
我们修改了实例tricks的num_pages,但是fluent没有受到影响,并且Book类属性也没有受到影响。不过如果我们调用内部的__class__方法:
我们注意到__class__没有受到影响。
从上面的例子中发现,在以后写代码时需要小心类属性和实例属性的作用域的范围。否则一不小心就会出现bug。
领取 专属20元代金券
Get大咖技术交流圈