如何在Python中打印类名
我正在试图找到打印类名称的语法。鉴于以下情况:如何在Python中打印类名,python,class,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) 从您的示例中,您正在查
#!/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)
从您的示例中,您正在查找实例的名称(
foo
和bar
)。简而言之,没有办法做到这一点,因为可能有多个命名变量指向同一个实例
如果您正在查找类的名称(即a
),可以使用l.\uuuuu class.\uuuu name.\uuuuu
。然而,这也不是完全防弹的:
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'
从您的示例中,您正在查找实例的名称(
foo
和bar
)。简而言之,没有办法做到这一点,因为可能有多个命名变量指向同一个实例
如果您正在查找类的名称(即a
),可以使用l.\uuuuu class.\uuuu name.\uuuuu
。然而,这也不是完全防弹的:
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'
不可能获得这些信息,因为在Python中,对象本身没有名称(只有对对象的引用才有名称)。考虑:
foo = a()
bar = foo # bar is now another name for foo
lst = [foo, bar] # both elements refer to the *same* object
在这种情况下,假设的“name”函数会为lst
的每个元素打印什么?要显示两个元素引用同一对象,请执行以下操作:
print [id(x) for x in lst]
将打印相同的
id
两次。无法获取此信息,因为在Python中,对象本身没有名称(只有对对象的引用才有名称)。考虑:
foo = a()
bar = foo # bar is now another name for foo
lst = [foo, bar] # both elements refer to the *same* object
在这种情况下,假设的“name”函数会为lst
的每个元素打印什么?要显示两个元素引用同一对象,请执行以下操作:
print [id(x) for x in lst]
将打印相同的
id
两次。您可以使用此:实例。\uuuuuu类\uuuuu名称\uuuuuuu
所以在你的例子中:a=foo.\uuuuuuu类\uuuuuuuuu名\uuuuuuuuuuuu
或b=bar.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
a
和b
属于字符串类型。您可以使用此:实例。\uuuuuu类\uuuuuuuu名称\uuuuuuu
所以在你的例子中:a=foo.\uuuuuuu类\uuuuuuuuu名\uuuuuuuuuuuu
或b=bar.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
a
和b
是字符串类型。这不是类的名称,而是包含类实例的变量的名称。类名是“a”。最好是查看locals()
字典,找到所需类的实例值。在这两种情况下,类的名称都是a
。您试图找到最初分配的变量的名称,但这是不可能的。@vanza:这是一个很好的观点,但Python中的“变量”不包含实例。变量是绑定到其他地方存在的对象的名称。这不是类的名称,而是包含类实例的变量的名称。类名是“a”。最好是查看locals()
字典,找到所需类的实例值。在这两种情况下,类的名称都是a
。您试图找到最初分配的变量的名称,但这是不可能的。@vanza:这是一个很好的观点,但Python中的“变量”不包含实例。变量是绑定到其他地方存在的对象的名称。