2009-09-06 7 views

Répondre

12

Vous pouvez utiliser object.__str__():

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

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

Cela vous donne la sortie par défaut pour les instances de B:

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

« la fonction par défaut Python utilise s'il n'y a pas de méthode __str__ "est repr, donc:

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

Cela vérifie si __repr__ a été remplacé dans la chaîne d'héritage ou non. IOW, si vous avez également besoin de contourner les remplacements possibles de __repr__ (au lieu de les utiliser s'ils existent, comme cette approche le ferait), vous aurez besoin d'appels explicites à object.__repr__(self) (ou à object.__str__ comme une autre réponse suggérée - même chose).

Questions connexes