[转]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的这个属性机制了。

posted on 2014-02-10 17:36  Xavierr  阅读(337)  评论(0)    收藏  举报