我试图找到打印我的类名称的语法。鉴于以下内容:
#!/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)
答案 0 :(得分:2)
在您的示例中,您正在查找实例的名称(foo
和bar
)。简而言之,没有办法做到这一点,因为可能有多个命名变量指向同一个实例。
如果您要查找类的名称(例如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__
a
和b
的类型为字符串。