2009-09-06 16 views

Odpowiedz

12

Można użyć object.__str__():

class A: 
    def __str__(self): 
     return "Something useless" 

class B(A): 
    def __str__(self): 
     return object.__str__(self) 

To daje wyjście domyślnej instancji B:

>>> b = B() 
>>> str(b) 
'<__main__.B instance at 0x7fb34c4f09e0>' 
2

„funkcja domyślna że Python używa jeśli nie ma __str__ metoda "to repr, czyli:

class B(A) : 
    def __str__(self) : 
     return repr(self) 

To sprawdza, czy __repr__ zostało nadpisane w łańcuchu dziedziczenia, czy nie. IOW, jeśli TAKŻE RÓWNIEŻ trzeba obejść możliwe przesłonięcia __repr__ (w przeciwieństwie do używania ich, jeśli istnieją, jak to zrobi to podejście), będziesz potrzebował jawnych wywołań do object.__repr__(self) (lub do object.__str__, jak sugeruje inna odpowiedź - to samo).

Powiązane problemy