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

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