python中若类属性与实例属性同名

python类中若定义了一个类属性,可以通过“类名.类属性名“来得到并修改此类属性值;也可以通过“实例名.变属性名"来得到此类属性的值,但若试图通过“实例名.变属性名”这种方式来修改此类属性的值,不会达到预期效果,结果是类属性的值并未被更改,实例首先会创建一个与类属性同名且相等值的“实例属性”,再对此实例属性进行操作

实例一:

python代码:

classCA:

c=0

def__init__(self):

#self.c=0

self.c+=3

self.__class__.c+=1

print"self.__class__.c="+str(self.__class__.c)

print"self.c="+str(self.c)

a=CA()

CA.c=100

b=CA()

屏幕输出:

self.__class__.c=1

self.c=3

self.__class__.c=101

self.c=103

实例二:

python代码:

classCA:

c=0

def__init__(self):

self.__class__.c+=1

printCA.c

a=CA()

printCA.c

printa.c

CA.c=100

printCA.c

a.c+=1

printa.c

屏幕输出:

0

1

1

100

101

posted @ 2008-06-19 21:00  beta2013  阅读(485)  评论(0编辑  收藏  举报