クラスまたはそのサブクラスのすべてのインスタンスで共有できるクラスプロパティを設定したいと考えています。任意のインスタンスがプロパティを設定することも可能でなければなりません。すべてのインスタンス(サブクラスも含む)がアクセスして設定できるクラスプロパティ
は、私は次のことを試してみました:
class A:
x = 1
@classmethod
def setX(cls, val):
if cls.__bases__:
cls = cls.__bases__[-1]
cls.x = val
これは、単一継承の場合には正常に動作するようです。しかし、継承の順序に応じて複数の継承を使用する場合、継承の順番によっては、クラスAが必ずしも最後ののベースであるとは限りません()。
堅牢な実装のためのアイデアはありますか?
セッターとゲッターはPythonで本当に悪い習慣です - あなたが実際に何か、この質問のためだけの例であれば、私が言うことができない、または行う。後者の場合は、["' property() ''組み込み関数/デコレータ@]をチェックしてください。 –
'A.x'を使うだけで動作しませんか? –