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

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

class A(object):

foo = 5 # some default value

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-类和实例属性之间有什么区别? 的全部内容, 来源链接: utcz.com/qa/424143.html

回到顶部