首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python __dir__()不更改dir()

Python __dir__()不更改dir()
EN

Stack Overflow用户
提问于 2015-12-14 13:44:15
回答 1查看 121关注 0票数 0

我希望将'dir‘方法添加到我的对象中,以便当对其调用dir()时,将调用我的函数。

我的代码如下所示:

代码语言:javascript
复制
class c(object):
    def __dir__(self):
        return ["a"]
print dir(c())
print c().__dir__()

只有第二张打印显示"a",而第一张则表现得很正常。我尝试过几种方法,有时起作用,有时不起作用。有什么好办法吗?

编辑:我错了,我的代码比我展示的要复杂。确切地说,我的代码用dir方法创建了一个对象“x”,并编写了:

代码语言:javascript
复制
x.__dir__()

很管用,但是

代码语言:javascript
复制
x.__dir__() == dir(x)

返回假

EN

回答 1

Stack Overflow用户

发布于 2015-12-14 13:53:38

我怀疑你写的是dir(c),而不是dir(c())。不同之处在于调用类上的dir (dir(c))调用类对象,该类对象本身具有默认__dir__(),这将给出不想要的默认行为。你现在提出的问题(dir(c()))应该是可行的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34268573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档