Python-类和实例属性之间有什么区别?

发布于 2021-02-02 23:23:53

之间是否存在有意义的区别:

class A(object):
    foo = 5   # some default value

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

如果要创建很多实例,这两种样式在性能或空间要求上是否有任何区别?阅读代码时,您是否认为两种样式的含义有明显不同?

关注者
0
被浏览
207
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    除了性能方面的考虑外,还有明显的语义差异。在类属性的情况下,仅引用一个对象。在实例属性设置实例中,可以有多个引用对象。例如

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看