python函数中的最大递归深度错误

M_g*_*bal 2 python recursion exception-handling

我在该行中遇到最大递归深度错误if hasattr(self, '_ubuffer')。有人可以看到我在做什么错吗?该函数的完整代码为:

def __getattr__(self, name):
        if hasattr(self, '_ubuffer'):
            buffer = object.__getattribute__(self,'_ubuffer')
            if name in buffer.dtype.names:
                return buffer.data[name]
        return object.__getattribute__(self,name)
Run Code Online (Sandbox Code Playgroud)

Ale*_*ley 5

hasattr__getattr__会导致递归的调用。从文档

hasattr(object, name)参数是一个对象和一个字符串。如果字符串是对象属性之一的名称,则结果为True,否则为False。(这是通过调用getattr(object,name)并查看它是否引发异常来实现的。) [我的重点]

要解决这个问题的一种方法可能是更换if hasattr(self, '_ubuffer')喜欢的东西if '_ubuffer' in self.__dict__