python 类属性修改的问题

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 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']


为什么当类属性为可变变量时,'+='不但改变类属性,同时还生成同名实例属性?而当类属性为普通变量时,却不改变类属性,只是生成同名实例属性呢??

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值