class 属性が 以外に設定されている Python クラスがありますNone
。新しいインスタンスを作成すると、その属性に加えられた変更はすべてのインスタンスで永続化されます。
これを理解するためのコードを次に示します。
class Foo(object):
a = []
b = 2
foo = Foo()
foo.a.append('item')
foo.b = 5
予想どおり、 returnとfoo.a
returnsを使用します。['item']
foo.b
5
新しいインスタンスを作成するとき (これを と呼びます)、 returnとreturnもbar
使用しbar.a
ます! ただし、最初にすべてのクラス属性をに設定すると、次のように に設定されます。['item']
bar.b
5
None
__init__
class Foo(object):
a = None
b = None
def __init__(self):
self.a = []
self.b = 2
bar.a
リターン[]
とbar.b
リターンを使用し2
ながら、foo.a
リターン['item']
とリターンをfoo.b
返します5
。
これはどのように機能すると思われますか?Python をプログラミングしてきた 3 年間、この問題に遭遇したことはないようです。ドキュメントのどこにも見つからないので、可能であれば参考にしていただければ幸いです。:)