[转]Python的类成员变量和实例成员变量
# coding: utf-8 class AAA(): aaa = 10 # 情形1 obj1 = AAA() obj2 = AAA() print obj1.aaa, obj2.aaa, AAA.aaa # 10 10 10 # 情形2 obj1.aaa += 2 print obj1.aaa, obj2.aaa, AAA.aaa # 12 10 10 # 情形3 AAA.aaa += 3 print obj1.aaa, obj2.aaa, AAA.aaa # 12 13 13
那在情形3中呢,答案是什么呢:
12 13 13
这又怎么说呢,其实很简单,AAA.aaa对AAA类属性做了一次设置,obj1.aaa经过一次+=操作后,实际上与AAA.aaa脱离了关系,而obj2.aaa没有经过任何的属性操作,因此其只会从其所属的类AAA中去获得aaa,并返回。
在py中任何东西都是对象,一个类,比如AAA一旦被加载,那么py就会把类AAA也视同为对象,那么AAA的那些实例呢,只会在必要的时候到他这里取一些值去用,这些个实例可都是不同的对象哦,基于这个道理,就很好理解py的这个属性机制了。
浙公网安备 33010602011771号