Saltar al contenido

clases anidadas de python

Te doy la bienvenida a proyecto on line, en este sitio encontrarás la respuesta que andabas buscando.

Solución:

Mi versión de tu código, con comentarios:

#
# 1. CamelCasing for classes
#
class Account:
    def __init__(self):
        # 2. to refer to the inner class, you must use self.Bank
        # 3. no need to use an inner class here
        self.bank = self.Bank()

    class Bank:
        def __init__(self):
            self.balance = 100000

        # 4. in your original code, you had a method with the same name as 
        #    the attribute you set in the constructor. That meant that the 
        #    method was replaced with a value every time the constructor was 
        #    called. No need for a method to do a simple attribute lookup. This
        #    is Python, not Java.

        def withdraw(self, amount):
            self.balance -= amount

        def deposit(self, amount):
            self.balance += amount

a = Account()
print(a.bank.balance)

Hay varios problemas:

  1. Estás usando el nombre balance tanto para el miembro de datos como para la función.
  2. Te estás perdiendo un return declaración en balance().
  3. balance() opera en un ejemplo de bank. No hay instancia en a.bank.balance: aquí, a.bank se refiere a la propia clase interna.

Sección de Reseñas y Valoraciones

Nos puedes añadir valor a nuestra información cooperando tu experiencia en las reseñas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *