如何在Python中打印类的名称

时间:2011-12-03 20:56:25

标签: python class

我试图找到打印我的类名称的语法。鉴于以下内容:

#!/usr/bin/python

class a:
    whatever  = 0

foo = a()
bar = a()
listOfClasses = [foo,bar]

for l in listOfClasses:
    print l 
    #I'm trying to find the syntax to print the name of the class (eg foo and bar)

3 个答案:

答案 0 :(得分:2)

在您的示例中,您正在查找实例的名称(foobar)。简而言之,没有办法做到这一点,因为可能有多个命名变量指向同一个实例。

如果您要查找的名称(例如a),则可以使用l.__class__.__name__。但是,这也不完全是防弹的:

In [10]: class A(object): pass
   ....: 

In [11]: A().__class__.__name__
Out[11]: 'A'

In [12]: Z = A

In [13]: Z().__class__.__name__
Out[13]: 'A'

答案 1 :(得分:1)

无法获取此信息,因为在Python对象中没有这样的名称(只有引用到对象具有名称)。考虑:

foo = a()
bar = foo # bar is now another name for foo

lst = [foo, bar] # both elements refer to the *same* object

在这种情况下,为lst的每个元素打印假设的“名称”功能会是什么?要显示两个元素都引用同一个对象:

print [id(x) for x in lst]

将两次打印相同的id

答案 2 :(得分:1)

您可以使用:instance.__class__.__name__

所以在你的情况下:a = foo.__class__.__name__

b = bar.__class__.__name__

ab的类型为字符串。