协慌网

登录 贡献 社区

获取实例的类名?

如果我从中执行此操作的函数是实例的类派生的基类,如何找出在 Python 中创建对象实例的类的名称?

想到也许检查模块可能帮助我在这里,但它似乎没有给我我想要的东西。如果没有解析__class__成员,我不知道如何获取这些信息。

答案

您是否尝试过__name__属性?即type(x).__name__将为您提供类的名称,我认为这就是您想要的。

>>> import itertools
>>> x = itertools.count(0)
>>> type(x).__name__
'count'

此方法仅适用于新样式的类 。您的代码可能会使用一些旧式类。以下适用于:

x.__class__.__name__

你想把类的名字作为字符串吗?

instance.__class__.__name__

type()?

>>> class A(object):
...    def whoami(self):
...       print type(self).__name__
...
>>>
>>> class B(A):
...    pass
...
>>>
>>>
>>> o = B()
>>> o.whoami()
'B'
>>>