我刚开始使用python,现在我需要打印出类的元素/对象/实例的名称,这是我的代码:
class Delicious :
sweet = 0
sour = 0
apple = Delicious()
kiwi = Delicious()
litchi = Delicious()
bracket = [apple, kiwi, lichi]
print(bracket)
我在终端上运行它,打印出来:
[< 主要。虚拟对象位于0x1019d9940>,< 主要。可疑对象位于0x1019d9978>,< 主要。可疑对象位于0x1019d99b0> ]
如何进行打印apple
kiwi
litchi
?
其他答案对我来说太难了,有人可以简单回答吗?
答案 0 :(得分:2)
让这个工作的方法是从globals()
抓取实例名称并从__str__
返回:
class Delicious :
sweet = 0
sour = 0
def __str__(self):
for k, v in globals().items():
if v == self:
return k
def __repr__(self):
return str(self)
现在打印将返回您定义的名称:
apple = Delicious()
print(apple)
apple
打印包含对象的list
会调用__repr__
,因此您也可以定义__repr__
以返回__str__
的结果,或致电print(*bracket)
在打印调用中解压缩使用其__str__
函数的列表:
print(bracket)
[apple, kiwi, lichi]
print(*bracket)
apple, kiwi, lichi
但这实际上是有道理的,在Python名称中只是分配给对象的标签,通过使用print
并打印名称,你得不到有关底层对象的信息。