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
2番目の方法はZope全体で使用されていますが、他の場所では見たことがありません。何故ですか?
編集:sr2222の回答への応答として。私は、この2つが本質的に異なることを理解しています。ただし、クラスがオブジェクトのインスタンス化にのみ使用される場合、2つは同じように機能します。では、クラス変数をインスタンス変数として使用するのは悪いことですか?そんな感じですが、理由は説明できません。