我有下面的类访问属性:的Python:如何从一个__getattribute__方法
class StrLogger(str):
def __init__(self, *args):
self._log_ = []
str.__init__(self, *args)
def __getattribute__(self, attr):
self._log_.append((self.__name__, attr))
return str.__getattribute__(self, attr)
我可以初始化slog = StrLogger('foo')
一个StrLogger
,我可以访问所有的其继承的方法从str
,并没有运行问题。问题是,当我试图用slog._log_
或slog.__dict__['_log_']
来检索日志时,__getattribute__
方法陷入无限递归。我明白为什么会发生这种情况,但我的问题是,我如何访问日志?
谢谢!我现在看到递归是由于在日志记录过程中访问'_log_'造成的。它还令我困惑,当其他属性被访问时,日志本身就起作用。 – Matt