免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3148 | 回复: 4
打印 上一主题 下一主题

python中类与实例赋值的相互影响?? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-27 23:16 |只看该作者 |倒序浏览
在一段代码中 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'
复制代码
求答解。。。。

论坛徽章:
0
2 [报告]
发表于 2011-04-28 09:50 |只看该作者
第一段代码你都没有给 a.name 赋值,取的是类A的默认值,如果你给 a.name 指定一个值,那么类A的默认值将被屏蔽掉,也就是第二段代码所示,没啥矛盾的

论坛徽章:
0
3 [报告]
发表于 2011-04-28 10:17 |只看该作者
第二段的a.name 就是在overwrite 父类中的属性,所以这是修改父类的属性就不对实例a构成影响了。

论坛徽章:
0
4 [报告]
发表于 2011-04-28 10:18 |只看该作者
可以参考类方法和类属性的重载

论坛徽章:
0
5 [报告]
发表于 2011-04-28 16:58 |只看该作者
3Q 晓得了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP