class Foo:
pass
>>> f = test.Foo()
让我们看看类实例......
>>> dir(f)
['__add__', [__class__] ...]
哦!让我们看一下类实例元数据......
>>> dir(f.__class__)
['__add__', [__class__] ...]
嗯...期待__class__
的属性;但返回f
尝试点击试用......
>>> dir(f.__class__.__class__)
['__abstractmethods__', '__base__' ...]
嗯...为什么两次魅力?
答案 0 :(得分:6)
dir(f)
和dir(f.__class__)
显示了两个不同内容的属性。只是你的空对象具有与其自己的类相同的属性。试试这个:
>>> class Foo:
... def __init__(self):
... self.a = 17
...
>>> f = Foo()
>>> 'a' in dir(f)
True
>>> 'a' in dir(f.__class__)
False