print OBJECT
llamadas OBJECT.__str__()
, cuando se llama OBJECT.__repr__()
? Veo que print OBJECT
llama al OBJECT.__repr__()
cuando OBJECT.__str__()
no existe, pero supongo que esa no es la única forma de llamar al __repr__()
.Cuando se llama __repr __()?
Respuesta
repr(obj)
llama
obj.__repr__
el propósito de __repr__
es que proporciona una representación 'formal' del objeto que se supone que es una expresión que puede ser eval
ed para crear el objeto. es decir,
obj == eval(repr(obj))
debe, pero no siempre en la práctica, rendimiento True
me pidieron en los comentarios de un ejemplo de cuando obj != eval(repr(obj))
.
class BrokenRepr(object):
def __repr__(self):
return "not likely"
Aquí hay otro:
>>> con = sqlite3.connect(':memory:')
>>> repr(con)
'<sqlite3.Connection object at 0xb773b520>'
>>>
repr(obj)
llamadas obj.__repr__
.
Esto está destinado a describir claramente un objeto, especialmente con fines de depuración. More info in the docs
@ S.Lott gracias por señalar mi error de marcado, ya está arreglado. Simplemente no sé a qué pautas te refieres. –
En python 2.x, `` `obj `` will end up calling
obj. repr() . It's shorthand for
repr() `.
-1: sintaxis desaprobada, que se eliminará. –
@S. Lott: Notado en la respuesta – recursive
no sólo __repr__()
ser llamado cuando se utiliza repr()
, sino también en los siguientes casos:
- Usted escribe
obj
en la cáscara y presiona entrar - ¿Alguna vez imprime un objeto en un diccionario/tupla/lista. P. ej .:
print [u'test']
no imprime['test']
¡Gracias por esto! –
- 1. MPMoviePlayerPlaybackDidFinishNotification se llama cuando no
- 2. cuando se llama a onSizeChanged()?
- 3. HttpsURLConnection se estanca cuando getInputStream() se llama
- 4. onRestoreInstanceState() no se llama cuando se espera
- 5. cuando se llama al evento "DOMNodeInserted"?
- 6. Cuando getView() en ArrayAdapter se llama
- 7. VLC muriendo cuando se llama desde Java
- 8. Cuando transactionManager no se llama "transactionManager"
- 9. Response.Cookies se restablece cuando se llama a RedirectToAction
- 10. ¿Por qué se llama onResume() cuando se inicia una actividad?
- 11. método no se llama cuando se utiliza yield return
- 12. ¿Se llama a onCreate cuando se crea un objeto Activity?
- 13. ¿Solo se llama a applicationWillResignActive cuando el iPhone se apaga?
- 14. Destructor no llama cuando se produce una excepción
- 15. ¿Cómo se llama cuando cambia un valor de UISlider?
- 16. onActivityResult a veces no se llama cuando Sub-Activity termina
- 17. Cambiar el puntero del mouse cuando se llama ajax
- 18. ¿Qué sucede cuando se llama 'return' desde un bloque 'using'?
- 19. script de Bash no salir inmediatamente cuando `exit` se llama
- 20. CAEmitterLayer no representa cuando -renderInContext: de superlayer se llama
- 21. cómo desbloquear la pantalla cuando se llama a BroadcastReceiver?
- 22. StorageFolder.CreateFileAsync falla cuando se le llama desde App.OnSuspending
- 23. Widget onUpdate llama cuando se puso en marcha Configuración Actividad
- 24. Depuración de código nativo cuando se llama desde
- 25. taquigrafía cuando se llama a métodos genéricos en C#
- 26. Mockito: cuando se llama al método A.a, ejecuta B.b
- 27. ¿Cómo se llama cuando digo "catch (Exception e) {}" en Java?
- 28. problema en Firefox cuando se llama a window.open
- 29. El cuadro de diálogo jQuery no aparece cuando se llama
- 30. ¿Cómo se llama cuando una interfaz "hereda" de otra?
¿Por qué obj == eval (repr (obj)) no siempre da True? ¿Serías capaz de dar un ejemplo? – inspectorG4dget
Para un objeto complejo, como un archivo, no necesariamente devolverá True. – Avi
@ inspectorG4dget: obj == eval (type ('myclass',(), {})) –