资讯专栏INFORMATION COLUMN

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

moven_j / 3055人阅读

摘要:以下的区别有意义么如果你需要创建很多实例,这两种风格在表现和空间要求上有什么区别么当你阅读代码的时候,你是否会考虑这两种风格的重要区别除了表现上的考虑,这边有一个重要的语义上的不同。用实例属性设置的实例中,实例有可能被多个对象引用。

以下的区别有意义么?

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

原文链接:Python: Difference between class and instance attributes

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38168.html

相关文章

  • -Python属性实例属性区别

    摘要:以下的区别有意义么如果你需要创建很多实例,这两种风格在表现和空间要求上有什么区别么当你阅读代码的时候,你是否会考虑这两种风格的重要区别除了表现上的考虑,这边有一个重要的语义上的不同。用实例属性设置的实例中,实例有可能被多个对象引用。 以下的区别有意义么? class A(object):     foo = 5   # some default value Vs class B(ob...

    objc94 评论0 收藏0
  • [] 属性访问、特性和描述符 2

    摘要:不像其他属性,描述符在类级别上创建。当所有者类被定义时,每个描述符对象都是被绑定到一个不同的类级别属性的描述符类实例。这必须返回描述符的值。此外,描述符对有一个方便的响应和请求格式。 注:原书作者 Steven F. Lott,原书名为 Mastering Object-oriented Python __getattribute__()方法 __getattribute__()方法是...

    CloudwiseAPM 评论0 收藏0
  • [] Python 学习 —— __init__() 方法 4

    摘要:同时,有多个类级别的静态构造函数的方法。这个累赘,无论如何,是被传递到每个单独的对象构造函数表达式中。我们可能只有几个特定的担忧,提供额外关键字参数给构造函数。 注:原书作者 Steven F. Lott,原书名为 Mastering Object-oriented Python 没有__init__()的无状态对象 下面这个示例,是一个简化去掉了__init__()的类。这是一个常见...

    yvonne 评论0 收藏0
  • []什么是元类metaclass?

    摘要:如果还是没有找到,就会使用父类中的元类来创建类。元类通常用于处理比较复杂的情况。这是因为使用了元类,它会将中定义的字段转换成数据库中的字段。中所有数据类型都是对象,它们要么是类的实例要么是元类的实例。 原文地址:what is metaclass in Python?我的简书地址::nummy 类即对象 在理解元类之前,需要先掌握Python中的类,Python中类的概念与SmallT...

    zsirfs 评论0 收藏0
  • [] Python 学习 —— __init__() 方法 1

    摘要:第一是在对象生命周期中初始化是最重要的一步每个对象必须正确初始化后才能正常工作。第二是参数值可以有多种形式。基类对象的方法对象生命周期的基础是它的创建初始化和销毁。在某些情况下,这种默认行为是可以接受的。 注:原书作者 Steven F. Lott,原书名为 Mastering Object-oriented Python __init__()方法意义重大的原因有两个。第一是在对象生命...

    MobService 评论0 收藏0

发表评论

0条评论

moven_j

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<