dir()一个__class__属性?

时间:2011-07-06 13:00:41

标签: python

class Foo:
  pass

>>> f = test.Foo()

让我们看看类实例......

>>> dir(f)
['__add__', [__class__] ...]

哦!让我们看一下类实例元数据......

>>> dir(f.__class__)
['__add__', [__class__] ...]

嗯...期待__class__的属性;但返回f

的属性

尝试点击试用......

>>> dir(f.__class__.__class__)
['__abstractmethods__', '__base__' ...]
嗯...为什么两次魅力?

1 个答案:

答案 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