我通常在 Python 中声明要在实例中使用的类变量的方式如下:
class MyClass(object):
def __init__(self):
self.a_member = 0
my_object = MyClass()
my_object.a_member # evaluates to 0
但以下也有效。这是不好的做法吗?如果是这样,为什么?
class MyClass(object):
a_member = 0
my_object = MyClass()
my_object.a_member # also evaluates to 0
第二种方法在 Zope 各处都在使用,但我在其他任何地方都没有见过。这是为什么?
编辑:作为对 sr2222 答案的回应。我知道两者本质上是不同的。但是,如果该类仅用于实例化对象,则两者的工作方式相同。那么使用类变量作为实例变量是不是很糟糕?感觉会是这样,但我无法解释为什么。