我有以下类试图定义一个自定义__getattribute__:
class Item:
def __init__(self):
self.x = 1
def __dir__(self):
return ['x']
def __getattribute__(self, i):
if i not in dir(self):
return "NOT DEFINED!"
else:
return super().__getattribute__(a)
然后我可以很好地运行它:
>>> i=Item()
>>> i.x
1
>>> i.a
'NOT DEFINED!'
但是,如果我更改此行:
if i not in dir(self):
至:
if i not in self.__dir__():
我得到了一个RecursionError它似乎在自称的东西。为什么会这样,为什么dir()和不同__dir__()?
弑天下
相关分类