次のシナリオがあります。
class Baseclass(object):
extra_fields = []
@classmethod
def extend(cls, key):
cls.extra_fields.append(key)
class A(Baseclass):
pass
class B(Baseclass):
pass
A.extend("foo")
これで、extendofBaseclassが呼び出され、に設定Baseclass.extra_fieldsされ["foo"]ます。次に、A.extra_fieldsになりますが["foo"]、そうなりB.extra_fieldsます。
extend呼び出されたサブクラスのみを変更する方法はありextendますか(事前にわかっていない可能性があるため、すべてのサブクラスを定義する必要はありません)。