class Game(object):
age=1
players=[]
type='football'
def __init__(self,**kw):
for i,k in kw.iteritems():
setattr(self,i,k)
print '******当类属性的值为非常量时********'
print '如果使用''+=''的模式:类属性与实例属性都变化'
g1.players+=['messi']
g1.age+=1
print g1.players,g1.age
print g2.players,g2.age
print g3.players,g3.age
print '如果使用''+''的模式:类属性不变化'
g1.players=g1.players+['kaka']
g1.age=g1.age+1
print g1.players,g1.age
print g2.players,g2.age
print g3.players,g3.age
age=1
players=[]
type='football'
def __init__(self,**kw):
for i,k in kw.iteritems():
setattr(self,i,k)
print '******当类属性的值为非常量时********'
print '如果使用''+=''的模式:类属性与实例属性都变化'
g1.players+=['messi']
g1.age+=1
print g1.players,g1.age
print g2.players,g2.age
print g3.players,g3.age
print Game.players,Game.age
#上段代码,类属性Game.age不变,,g1增加实例属性age,为2,但类属性players变为['messi'],同时g1增加同名实例属性players['messi']
print '如果使用''+''的模式:类属性不变化'
g1.players=g1.players+['kaka']
g1.age=g1.age+1
print g1.players,g1.age
print g2.players,g2.age
print g3.players,g3.age
print Game.players,Game.age
#上段代码,类属性Game.age不变,,g1实例属性age变为3,但类属性players不变仍然为['messi'],g1的实例属性却变为了['messi','cluo']
为什么当类属性为可变变量时,'+='不但改变类属性,同时还生成同名实例属性?而当类属性为普通变量时,却不改变类属性,只是生成同名实例属性呢??