我想在類的實例化期間更改__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好吧,我有'__getattr__'的兩個實現,每個都使用不同類型的序列化(json,pickle),我希望我的類能夠在基於kwarg的實例化中選擇一個。 – ballsatballsdotballs
爲什麼不是子類?據推測,來電者知道哪些是因爲他們正在設置kwarg –