以下之间是否有任何有意义的区别:
Is there any meaningful distinction between:
class A(object):
foo = 5 # some default value
对比
class B(object):
def __init__(self, foo=5):
self.foo = foo
如果您要创建大量实例,这两种样式在性能或空间要求上是否有任何差异?看代码的时候,有没有觉得这两种风格的含义有很大的不同?
If you're creating a lot of instances, is there any difference in performance or space requirements for the two styles? When you read the code, do you consider the meaning of the two styles to be significantly different?
存在显着的语义差异(超出性能考虑):
There is a significant semantic difference (beyond performance considerations):
例如:
>>> 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
[]
这篇关于类属性和实例属性有什么区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!