如何打印出类的元素

时间:2016-08-19 08:57:56

标签: python python-3.x

我刚开始使用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

其他答案对我来说太难了,有人可以简单回答吗?

1 个答案:

答案 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并打印名称,你得不到有关底层对象的信息。