我想在我的对象中添加' 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
答案 0 :(得分:1)
我怀疑你在某处写dir(c)
而不是dir(c())
。区别在于调用类dir
(dir(c)
)调用类对象,该类对象本身具有默认的__dir__()
,这将给出不希望的默认行为。你现在的问题(dir(c())
)应该有效。