私は Python でクラスレベル変数のリスクをいじっていましたが、クラスレベル変数としてのリストのリスクは、タプル (空のタプルなど) で解決できると考えました。
取った:
class BaseClass(object):
default_sth = []
def foo(self):
for sth in self.default_sth:
pass
これは次の理由で危険です。
class SubClass(BaseClass):
pass
a = SubClass()
a.default_sth.append(3)
print(BaseClass.default_sth) # [3]
None
空のタプル ( ?) の代わりに使用するtuple()
と、反復時に失敗するため、代わりに危険になる可能性があります。
不変性のため、これは良い選択肢だと思いますが、どこかでこれについて話している人を見たことがないと思います。この推論に欠陥があると思いますか? それはpythonicですか?