2017-03-26 4 views
0

Gibt es eine Möglichkeit, Pythons print__str__ meiner Klasse zu verwenden, wenn sie in anderen Klassen enthalten sind?Wie drucke ich den __str__ meiner Klasse?

class C(object): 
    def __str__(self): 
     return 'MyC' 

print C() # OK 

print [C()] # prints [<__main__.C object at 0x7fb8774e59d0>] 

Antwort

3

Sie haben __repr__ zu definieren, da Sie nicht direkt sind nennen es __str__ Methode und dass Drucklisten ruft die __repr__ Werte Methode nicht __str__.

class C(object): 
    def __str__(self): 
     return 'MyC' 
    def __repr__(self): 
     return self.__str__() # return the same result as the __str__ method 

print C() # prints MyC 

print [C()] # also prints MyC 
1

Python wird die repr räsentation, wenn sie in einem Behälter drucken, wie Sie sehen. Sie können __repr__ anstelle von __str__ definieren. Dieser soll jedoch Strings erzeugen, die ausgewertet werden können, um das Objekt möglichst wieder zurück zu bekommen. Also, um diese beiden Situationen in Ihrem Fall zu behandeln, können Sie dies tun.

class C(object): 
    def __repr__(self): 
     return 'C()' 

print(C()) 

print([C()])