2009-09-06 10 views

risposta

12

È possibile utilizzare object.__str__():

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

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

Questo vi dà l'output di default per le istanze di B:

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

"la funzione di default che Python usa se non esiste un metodo __str__repr, quindi:

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

Questo vale se __repr__ è stato sostituito nella catena di ereditarietà o meno. IOW, se ANCHE è necessario ignorare le possibili sostituzioni di __repr__ (al contrario di utilizzarle se esistono, come farebbe questo approccio), occorreranno chiamate esplicite a object.__repr__(self) (oppure a object.__str__ come suggerita un'altra risposta - stessa cosa).

Problemi correlati