我正在尝试覆盖Python类中的 dir 方法。在里面我想调用内置的dir方法,但我调用它的尝试似乎是调用我的方法,而不是默认的实现。
The correct way to override the __dir__ method in python 这个问题似乎很有意义,但没有回答这个问题,因为看起来他们的问题是扩展一个numpy类,而不是调用类的默认dir实现
相关代码
def __dir__(self):
return builtins.dir(self) + self.fields()
换句话说,我想要通常列出的所有内容以及其他一些东西,但是builtins.dir()调用只是递归地调用这个函数。
我在Python 3.6中测试它
答案 0 :(得分:0)
由于覆盖__dir__
仅限课堂内的问题'实例,你可以这样做:
class Test:
def test(self):
print('hey')
def __dir__(self):
return dir(Test) + ['hello']
请注意,dir(Test)
与dir(Test())
不同,因为只有后者才会调用Test.__dir__
。
在dir(super())
内使用Test.__dir__
也有用,但它只为您提供父类的数据,因此dir(Test())
赢了包含仅在类Test
中出现的属性的名称。