dir()一个__class__属性?

Vai*_*pai 1 python

class Foo:
  pass

>>> f = test.Foo()
Run Code Online (Sandbox Code Playgroud)

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

>>> dir(f)
['__add__', [__class__] ...]
Run Code Online (Sandbox Code Playgroud)

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

>>> dir(f.__class__)
['__add__', [__class__] ...]
Run Code Online (Sandbox Code Playgroud)

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

尝试打击和试用......

>>> dir(f.__class__.__class__)
['__abstractmethods__', '__base__' ...]
Run Code Online (Sandbox Code Playgroud)

嗯...为什么两次魅力?

Ned*_*der 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
Run Code Online (Sandbox Code Playgroud)