2017-02-18 16 views
0

sagen, dass ich ein Element Klasse JetztWie funktioniert die Funktion print()?

class Element(object): 
    def __init__(self,key,val): 
     self.key = key 
     self.val = val 

    def __str__(self): 
     return '(' + str(self.key) + ',' + str(self.val) + ')' 

haben, wenn ich versuche, ein Array zu drucken, die Objekte der Element-Klasse

arr = [Element(10,20),Element(20,30)] 
print(arr) 

enthält, ist der Ausgang -

[<maxheap.Element object at 0x01C1FCB0>, <maxheap.Element object at 0x01C270B0>] 

Welche Funktion druckt <maxheap.Element object at 0x01C1FCB0>? Warum wird die Methode __str__(self) nicht wie in print(Element(10,20)) aufgerufen?

+1

Mögliches Duplikat von [Unterschied zwischen \ _ \ _ str \ _ \ _ und \ _ \ _ repr \ _ \ _ in Python] (http://stackoverflow.com/questions/1436703/difference-between-str-and- Repr-in-Python) – mkrieger1

Antwort

-1

Versuchen Sie es mit

def __repr__(self): 

statt

def __str__(self): 
0

Versuchen Indizes statt Drucken der Liste auf einmal verwendet wird, wie folgt aus:
print(arr[0])
print(arr[1])


Statt:
print(arr)

EDIT:
Mit __repr__ Arbeiten in diesem Fall.

+0

Aber warum? Mit __repr (self) __ löst das Problem, dass print() repr() aufruft. Ich verstehe nicht die Verwendung von __str (Selbst) __ dann. – Kakaji

+0

@Kakaji Bitte lesen Sie die Dokumentation. Es ist dort sehr klar/detailliert und in diesem Netzwerk eine echte FAQ – frlan

Verwandte Themen