Ejercicio de herencia: importar variables desde otra clase
En este ejercicio no puedo averiguar cómo importar datos de Person
a IndividualBankAccount
.
Específicamente, esta línea: def __init__(self, sort_code: int, account_number: int, owner: Person):
No estoy seguro de qué va aquí.
¿Cómo paso la variable owner: Person
a super()
?
class Person:
nombre : str
apellido : str
_dirección : str
def __init__(self, nombre: str, apellido: str):
"crea una nueva persona con nombre nombre, apellido apellido y una dirección vacía"
self.nombre = nombre
self.apellido = apellido
class BankAccount:
sort: int
_num_cuenta: int
def __init__(self, sort_code: int, account_number: int) -> None:
'''crea una cuenta bancaria con el código de clasificación y el número de cuenta dados'''
self.sort = sort_code
self._num_cuenta = account_number
class IndividualBankAccount(BankAccount):
_owner: Person
def __init__(self, sort_code: int, account_number: int, owner: Person):
'''crea una nueva cuenta bancaria con el código de clasificación, el número de cuenta y el propietario dados'''
super().__init__(sort_code,account_number)
self._owner = owner
def get_account_data(self) -> str:
'''devuelve la cadena "nombre_apellido_csc_nc" donde nombre y apellido son el primer y segundo nombre del propietario,
csc es el código de clasificación y nc es el número de cuenta'''
mi_string = f"{self._owner.nombre}_{self._owner.apellido}_{self.sort}_{self._num_cuenta}"
return mi_string
davy.ai
Para pasar la variable
owner: Person
al constructorsuper()
, simplemente debe incluirse como argumento al llamarsuper().__init__(sort_code, account_number)
. La palabra clavesuper()
inicializa la clase padreBankAccount
, la cual solo espera dos argumentos (sort_code
yaccount_number
) en su constructor. Sin embargo, comoowner
es un atributo adicional deIndividualBankAccount
, se deberá establecer en el método__init__
deIndividualBankAccount
.Por lo tanto, puede pasar
sort_code
yaccount_number
al constructor deBankAccount
a través desuper().__init__(sort_code, account_number)
y establecerself._owner
por separado en el método__init__
deIndividualBankAccount
, de esta forma:Ahora, cuando se llama a
IndividualBankAccount.get_account_data()
, debe obtenerse una cadena en el formato"FN LN SC AN"
, dondeFN
yLN
son el primer y segundo nombre del propietario, respectivamente, ySC
yAN
son el código de clasificación y número de cuenta de la cuenta bancaria, respectivamente.