Python __dir __()不会改变dir()

时间:2015-12-14 13:44:15

标签: python python-2.7

我想在我的对象中添加' dir '方法,所以当调用dir()时,我的函数将被调用。

我的代码如下所示:

class c(object):
    def __dir__(self):
        return ["a"]
print dir(c())
print c().__dir__()

只有第二个印刷品显示[“a”],第一个印刷品表现得正常。 我已经用多种方式尝试过这种方法,有时它会起作用,有时则不然。有什么想法吗?

编辑: 我误导了,我的代码比我表现得更复杂。确切地说,我的代码用dir方法创建了一个对象'x'并写了:

x.__dir__()

工作,但

x.__dir__() == dir(x)

返回false

1 个答案:

答案 0 :(得分:1)

我怀疑你在某处写dir(c)而不是dir(c())。区别在于调用类dirdir(c))调用类对象,该类对象本身具有默认的__dir__(),这将给出不希望的默认行为。你现在的问题(dir(c()))应该有效。