print OBJECT
chiamate OBJECT.__str__()
, quindi quando viene chiamato OBJECT.__repr__()
? Vedo che chiama OBJECT.__repr__()
quando OBJECT.__str__()
non esiste, ma mi aspetto che non sia l'unico modo per chiamare __repr__()
.Quando viene chiamato __repr __()?
risposta
repr(obj)
chiama
obj.__repr__
lo scopo di __repr__
è che fornisce una rappresentazione 'formale' dell'oggetto che si suppone essere un'espressione che può essere eval
ed a creare l'oggetto. cioè,
obj == eval(repr(obj))
dovrebbe, ma non sempre, in pratica, resa True
mi è stato chiesto nei commenti per un esempio di quando obj != eval(repr(obj))
.
class BrokenRepr(object):
def __repr__(self):
return "not likely"
Ecco un altro esempio:
>>> con = sqlite3.connect(':memory:')
>>> repr(con)
'<sqlite3.Connection object at 0xb773b520>'
>>>
repr(obj)
chiamate obj.__repr__
.
Questo è destinato a descrivere chiaramente un oggetto, appositamente per scopi di debug. More info in the docs
@ S.Lott Grazie per aver segnalato il mio errore di markup, ora è stato risolto. Semplicemente non so a quali linee guida ti riferisci. –
In python 2.x, `` `obj `` will end up calling
obj. repr() . It's shorthand for
repr() `.
-1: sintassi obsoleta, che verrà rimossa. –
@S. Lott: Notificato in risposta – recursive
Non solo __repr__()
ottenere chiamato quando si utilizza repr()
, ma anche nei seguenti casi:
- Si digita
obj
nel guscio e si preme immettere - Hai mai stampa un oggetto in un dizionario/tuple/lista. Es .:
print [u'test']
non stampa['test']
Grazie per questo! –
- 1. Quando viene chiamato CanExecute?
- 2. Quando viene chiamato viewDidLoad?
- 3. Quando viene chiamato didRegisterForRemoteNotificationsWithDeviceToken?
- 4. Quando viene chiamato DbConnection.StateChange?
- 5. Quando viene chiamato 'drawRect'?
- 6. View.onDraw() --- quando viene chiamato?
- 7. Quando viene chiamato ServiceConnection.onServiceDisconnected()?
- 8. MPMoviePlayerPlaybackDidFinishNotification viene chiamato quando non
- 9. Quando viene chiamato Angular2 ngAfterViewInit?
- 10. quando viene chiamato l'evento "DOMNodeInserted"?
- 11. jQuery Dialog non appare quando viene chiamato
- 12. Controllo personalizzato ASP.NET: quando viene chiamato LoadPostData()?
- 13. Quando viene chiamato il callback React.render()?
- 14. Quando viene chiamato il metodo layoutSubviews?
- 15. Quando viene chiamato un corpo su Load?
- 16. Quando viene chiamato il costruttore in java?
- 17. ASP MVC: quando viene chiamato IController Dispose()?
- 18. Quando il costruttore di movimento viene chiamato
- 19. Quando viene chiamato getApplicationContext() della classe Application?
- 20. Quando viene chiamato il metodo IEnumerator.Reset()?
- 21. onOrientationChanged() viene chiamato quando OrientationEventListener è disabilitato
- 22. Quale evento viene chiamato quando colpiamo UISearchBar
- 23. Quale metodo viene chiamato quando chiudo un'app
- 24. Quando viene chiamato paintGL di QGLWidget?
- 25. Quando viene chiamato getItem di FragmentPagerAdapter?
- 26. prepareForSegue non viene chiamato quando viene selezionata la riga UITableView?
- 27. ComponentDidMount() non viene chiamato quando viene attivato il componente reattivo
- 28. Quale metodo viene chiamato su UIView quando viene ridimensionato dall'autolayout?
- 29. Perché viene chiamato onResume() quando viene avviata un'attività?
- 30. Quale metodo viene chiamato quando viene selezionato un oggetto QGraphicsI
Perché obj == eval (repr (obj)) non danno sempre vero? Saresti in grado di dare un esempio? – inspectorG4dget
Per un oggetto complesso, ad esempio un file, non restituirà necessariamente True. – Avi
@ inspectorG4dget: obj == eval (tipo ('myclass',(), {})) –