Deseamos mostrarte la mejor respuesta que hemos encontrado en todo internet. Nosotros deseamos que te sea de mucha ayuda y si quieres comentarnos alguna mejora hazlo libremente.
Solución:
Bueno el __repr__
tiene un significado especial en el modelo de datos de Python:
object.__repr__(self)
Llamado por el
repr()
función incorporada para calcular el “oficial” string representación de un objeto. Si es posible, debería verse como una expresión de Python válida que podría usarse para recrear un objeto con el mismo valor (dado un entorno apropiado). Si esto no es posible, un string de la forma<...some useful description...>
debe ser devuelto. El valor de retorno debe ser un string objeto. Si una clase define__repr__()
pero no__str__()
entonces__repr__()
también se utiliza cuando un “informal” string se requiere la representación de instancias de esa clase.Esto se usa normalmente para la depuración, por lo que es importante que la representación sea rica en información y sin ambigüedades.
Eso significa que string que es devuelto por __repr__
debería ser utilizable para crear otro objeto como este. Entonces __repr__
es algo que Muy a menudo necesita superarse, no debido a la __class__.__name__
sino porque el “estado” tiene que ser captado en la representación.
class A(object):
def __init__(self, param):
self._param = param
def __repr__(self):
'''Returns representation of the object'''
return("(!r)".format(self.__class__.__name__, self._param))
Entonces absolutamente debería anular el __repr__
cuando agrega parámetros para __init__
:
class B(A):
def __init__(self, param1, param2):
self._param = param1
self._param2 = param2
def __repr__(self):
'''Returns representation of the object'''
return("(!r)".format(self.__class__.__name__, self._param, self._param2))
Pero en caso de que el __repr__
de la superclase todavía precisamente “describe” la subclase, entonces no tiene sentido sobrecargar la __repr__
:
class B(A):
pass
Sin embargo, siempre es una buena opción usar self.__class__.__name__
sobre codificar el nombre de la clase, en caso de que usted u otra persona lo subclase.
Reseñas y calificaciones
Si estás contento con lo expuesto, tienes el poder dejar un enunciado acerca de qué le añadirías a este ensayo.