从Python中重写的dir方法调用内置dir

2024-04-25 17:57:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图重写Python类中的dir方法。在内部,我想调用内置的dir方法,但是我调用它的尝试似乎是在调用我的方法,而不是默认的实现。你知道吗

The correct way to override the __dir__ method in python 这个问题似乎相关,但没有回答这个问题,因为他们的问题似乎是扩展一个numpy类,而不是调用该类的默认dir实现

相关代码

def __dir__(self):
    return builtins.dir(self) + self.fields()

换言之,我想要列出的所有东西加上一些其他的东西,但是内置目录()call只是递归地调用这个函数。你知道吗

我正在用python3.6测试这个


Tags: theto方法代码inselfnumpydef
1条回答
网友
1楼 · 发布于 2024-04-25 17:57:53

由于重写__dir__只在类的实例中起作用,您可以这样做:

class Test:
    def test(self):
        print('hey')

    def __dir__(self):
        return dir(Test) + ['hello']

注意dir(Test)dir(Test())不同,因为只有后者调用Test.__dir__。你知道吗

Test.__dir__内部使用dir(super())也可以,但它只为父类提供数据,这样dir(Test())就不会包含类Test中唯一存在的属性的名称。你知道吗

相关问题 更多 >