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
勉強心を持てば、生活は虚しくない!