Error al devolver __str__ desde la superclase.
Estoy obteniendo una salida inexacta para mi código. Cuando se llama a
super().str()
la salida fue
<main.Trip object at 0x00000251D30D5A30>
La salida debería ser
ID del conductor: 1 Nombre: John Contacto: 82121355
from datetime import datetime
class Driver:
_nextId = 1
def init(self,nombre,contacto):
self._name = nombre
self._contact = contacto
self._driverId = Driver._nextId
Driver._nextId += 1
@property
def driverId(self):
return self._driverId
@property
def name(self):
return self._nombre
@property
def contact(self):
return self._contact
@contact.setter
def contact(self, newContact):
self._contact = newContact
def __str__(self):
return f'ID del conductor: {self._driverId} Nombre: {self._name} Contacto: {self._contact}'
class Trip:
def init(self,fechaDelViaje,puntoDePartida,destino,distancia,conductor):
self._tripDate = fechaDelViaje
self._startPoint = puntoDePartida
self._destination = destino
self._distance = distancia
self._driver = conductor
@property
def tripDate(self):
return self._tripDate
@property
def destination(self):
return self._destination
@property
def driver(self):
return self._driver
def __str__(self):
return f'{self._tripDate}, Desde: {self._startPoint} Hasta: {self._destination}\n Distancia: {self._distance}km' + super().__str__()
if name == ‘main‘:
d1 = Driver(‘John’,’82121355′)
t1 = Trip(datetime(2021,5,30,17,45),’Empire State Building’,’Rockerfeller Centre’,’2.25′,d1)
print(t1)
davy.ai
El problema con el código es que el método
__str__
en la claseTrip
no está formateando correctamente la salida de la llamadasuper().__str__()
. La llamadasuper().__str__()
devuelve una representación en cadena del objetoDriver
, pero no se está concatenando correctamente en la salida de cadena del objetoTrip
.Para solucionar este problema, es necesario agregar un carácter de nueva línea (“\n”) antes de la llamada
super().__str__()
y formatearlo entre paréntesis para que se concatene correctamente a la salida de cadena del objetoTrip
.Aquí está el código corregido:
La salida del código anterior será:
que es la salida esperada.