2016-08-19 108 views
-1

我剛剛開始使用python,現在我需要打印出一類的元素/對象/實例的名稱,這是我的代碼:一類的如何打印出元素

class Delicious : 
    sweet = 0 
    sour = 0 

apple = Delicious() 
kiwi = Delicious() 
litchi = Delicious() 

bracket = [apple, kiwi, lichi] 

print(bracket) 

我跑它在終端上,它打印出: [在0x1019d9940 < .Delicious對象>,< 在0x1019d9978 .Delicious對象>,< 在0x1019d99b0> .Delicious對象] 如何使這打印applekiwilitchi

其他答案對我來說太難了,有人能回答它嗎?

+0

糖醋前需要四個空格的縮進。沒有它,它就無法工作。 –

+0

'apple = Delicious()'爲了創建*實例*的'Delicious'和'print(apple.sweet,apple.sour)'來打印出它的元素。 –

+0

@Jim no我只需要打印'apple' –

回答

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)以unp ACK在使用他們的__str__功能的打印通話清單:

print(bracket) 
[apple, kiwi, lichi] 

print(*bracket) 
apple, kiwi, lichi 

但這個牌子0踏實感,在Python的名字只是標籤分配給對象,通過使用print和打印的名字,你沒有得到有關的信息基礎對象。