2

この質問は 2016 年に出されましたが、回答がありませんでした:記述子をクラス属性ではなくインスタンス属性に割り当てることはできますか?

私は基本的な記述子を持っています

class MyThing:
    def __set_name__(self, owner, name):
        print(f'Assigned to {name} on {owner}')
        self.name = name

    def __get__(self, obj, typ):
        print(f'Getting {self.name} on {obj}')
        return getattr(obj, self.name)

    def __set__(self, obj, val):
        print(f'Setting {self.name} on {obj} to {val}')
        setattr(obj, self.name, val)

実行時にこの記述子のインスタンスを他のクラス インスタンスに割り当て、記述子プロトコルに従って動作させることは可能ですか?

単純なアプローチは失敗します。

foo.thing = MyThing()

foo.thing記述子のようには動作しません。典型的なインスタンス属性のように動作します。

これは XY 問題ではありません。私が述べたように、私は具体的に質問への回答を求めています。

4

1 に答える 1