+ -
当前位置:首页 → 问答吧 → python中类与实例赋值的相互影响??

python中类与实例赋值的相互影响??

时间:2011-04-27

来源:互联网

在一段代码中 class A中属性的修改影响到了对象a中属性的值
  1. >>> class A:
  2.         name = 'E'

  3. >>> a = A()
  4. >>> a.name
  5. 'E'
  6. >>> A.name = 'R'
  7. >>> a.name
  8. 'R'
复制代码
在另一段代码中  class A中属性的修改没有影响到对象a,b中属性的值
  1. >>> class A:
  2.         name = 'E'
  3.        
  4. >>> a = A()
  5. >>> b = A()
  6. >>> a.name = 'A'
  7. >>> b.name = 'B'
  8. >>> a.name
  9. 'A'
  10. >>> b.name
  11. 'B'
  12. >>> A.name = 'C'
  13. >>> a.name
  14. 'A'
  15. >>> b.name
  16. 'B'
复制代码
求答解。。。。

作者: 十年梦生   发布时间: 2011-04-27

第一段代码你都没有给 a.name 赋值,取的是类A的默认值,如果你给 a.name 指定一个值,那么类A的默认值将被屏蔽掉,也就是第二段代码所示,没啥矛盾的

作者: narutowu   发布时间: 2011-04-28

第二段的a.name 就是在overwrite 父类中的属性,所以这是修改父类的属性就不对实例a构成影响了。

作者: linglan520   发布时间: 2011-04-28

可以参考类方法和类属性的重载

作者: linglan520   发布时间: 2011-04-28