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. cuando se llama a onSizeChanged()?
- 2. MPMoviePlayerPlaybackDidFinishNotification se llama cuando no
- 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 transactionManager no se llama "transactionManager"
- 7. Cuando getView() en ArrayAdapter se llama
- 8. VLC muriendo cuando se llama desde Java
- 9. ¿Solo se llama a applicationWillResignActive cuando el iPhone se apaga?
- 10. método no se llama cuando se utiliza yield return
- 11. ¿Por qué se llama onResume() cuando se inicia una actividad?
- 12. ¿Se llama a onCreate cuando se crea un objeto Activity?
- 13. Response.Cookies se restablece cuando se llama a RedirectToAction
- 14. OpenCV imread colgando cuando se llama desde una solicitud web
- 15. UIViewController subclase no init llama cuando se carga de punta
- 16. script de Bash no salir inmediatamente cuando `exit` se llama
- 17. CAEmitterLayer no representa cuando -renderInContext: de superlayer se llama
- 18. Cómo funciona Thread.sleep() cuando se llama desde múltiples hilos
- 19. onActivityResult a veces no se llama cuando Sub-Activity termina
- 20. El complemento jQuery no funciona cuando se llama dos veces
- 21. UITableView Problemas de dibujo cuando ReloadData se llama
- 22. ¿Qué sucede cuando se llama 'return' desde un bloque 'using'?
- 23. Método de ejecución (mágico) cuando se llama el método existente
- 24. "RuntimeError: thread .__ init __() no se llama" cuando subclassing threading.Thread
- 25. ¿Cómo se llama cuando digo "catch (Exception e) {}" en Java?
- 26. window.open() devuelve indefinido cuando se llama desde setTimeout en Android
- 27. taquigrafía cuando se llama a métodos genéricos en C#
- 28. Destructor no llama cuando se produce una excepción
- 29. ¿Cómo se llama cuando cambia un valor de UISlider?
- 30. Widget onUpdate llama cuando se puso en marcha Configuración Actividad
¿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',(), {})) –