猿问

对于一个类来说,dir()方法和__dir__()方法为什么会有不同?

查看dir方法的文档,里面有这样的描述:

If the object supplies a method named __dir__, it will be used; otherwise
the default dir() logic is used and returns

也就是说,只要对象本身有__dir__方法,那么实际上两者应该是一致的。但是尝试下面这个例子,发现两者并不是一致的:

class A(object):
    pass
    print(dir(A))
print(A.__dir__(A))

__dir__方法会多出一些属性,例如__mro____name__等等,这是为什么呢?


慕桂英3389331
浏览 1057回答 1
1回答

蛊毒传说

你这两个print其实并不是一样的,第一个调用的是A的元类的__dir__方法,第二个调用的才是A的__dir__方法。
随时随地看视频慕课网APP

相关分类

Python
我要回答