クラスのインスタンス化中に__getattr__
を変更したいと思います。たとえば:インスタンス化時に__getattr__を変更する
class AttrTest(object):
def __init__(self):
self.__getattr__ = self._getattr
def _getattr(self, attr):
print("Getting {}".format(attr))
私はこれのように振る舞うと予想しているでしょう:
class AttrTest(object):
def __getattr__(self, attr):
print("Getting {}".format(attr))
しかし、それはしていません。私は実行たとえば
、:
>>> at = AttrTest()
>>> at.test
私は両方のクラスがGetting test
を印刷することを期待するが、トップクラスはAttributeError
をスローします。
__getattr__
このように変更することはできませんか?
私が持っている回答の質問は、当然、「なぜですか? –
@WayneWernerまあ、別のタイプのシリアライゼーション(json、pickle)を使用する '__getattr__'という2つの実装があり、私のクラスではインスタンス化時にkwargに基づいてクラスを選択できるようにしたいと考えていました。 – ballsatballsdotballs
なぜサブクラスはありませんか?おそらく、発信者は、彼らがkwargを設定しているのでどちらがどちらであるかを知っているでしょう –