[译]Python中的类属性与实例属性的区别

Python中的类属性与实例属性的区别:
以下的区别有意义么?

class A(object):

foo = 5   # some default value

Vs

class B(object): def init(self, foo=5):

         self.foo = foo

如果你需要创建很多实例,这两种风格在表现和空间要求上有什么区别么?当你阅读代码的时候,你是否会考虑这两种风格的重要区别?

除了表现上的考虑,这边有一个重要的语义上的不同。在类属性的那个例子中,只有一个对象被引用。用实例属性设置的实例中,实例有可能被多个对象引用。比如说:

>>> class A: foo =[ ]
>>> a, b = A(), A()
>>> a.foo.append(5)
>>> b.foo
[5]
>>> class A:
...  def __init__(self): self.foo = [ ]
>>> a, b = A(), A()
>>> a.foo.append(5)
>>> b.foo   
[]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,596评论 19 139
  • 1.1面向对象 面向对象(object-oriented ;简称: OO)至今还没有统一的概念 我这里把它定义为:...
    TENG书阅读 3,627评论 0 0
  • 在这个快节奏的社会,在这个压力山大的环境,我们被迫的去追,被迫的去赶,而忘记了自己内心深处最想要的是什么。所以我们...
    云学科技阅读 3,616评论 0 0
  • 第七篇 如何使你变得更加成熟 55.摆脱生活中的不幸 人生的路,总有几道弯,几道沟,几道坎;生活的味,总有几分苦,...
    禅园听雪阅读 3,764评论 6 15
  • 你看,南方城市的雨来的正好,你慢慢听,听雨,也听故事。 1 W姑娘跟男朋友其实都是我的高中同学,十七八岁最美好的年...
    她说她的话阅读 3,514评论 1 6