объект не имеет атрибута вне класса

#javascript #python #html #class

#javascript #python #HTML #класс

Вопрос:

Здравствуйте, я работаю над проектом, и после создания класса я не могу получить доступ к внешним методам, чтобы функциональность работала. Я хотел бы использовать методы внутри моего класса для добавления или удаления из баланса и отображения.

Любая помощь была бы отличной

Код:

 class BankAccount:
    def __init__(self, full_name, account_number, routing_number, balance):
        self.full_name = full_name
        self.account_number = account_number
        self.routing_number = routing_number
        self.balance = balance

        def deposit(amount):
            self.balance  = amount
            print("n Amount Deposited:", amount)

        # Function to withdraw the amount
        def withdraw(self):
            amount = float((input("Enter a amount")))
            if self.balance >= amount:
                self.balance -= amount
                print("n You Withdrew", amount)
            else:
                print("n Insufficient funds.")
                self.balance - 10
        # Function to display the amount

        def display_balance(self):
            print("n You have ", self.balance)

        def add_interest(balance):
            interest = balance * 0.00083

        def print_receipt():
            print(full_name)
            print("Account Number: "   account_number)
            print("routing number: "   routing_number)
            print("balance:"   balance)


# creating an object of class
s = BankAccount("Bob", 00000, 0000, 1)

# Calling functions with that class object
s.withdraw(22)
s.display()
# Calling functions with that class object
  

Комментарии:

1. display метод не определен. Я считаю s.display() , что должно быть s.display_balance()

2. @sytech та же проблема. «объект’BankAccount’ не имеет атрибута ‘display_balance'»

3. Все ваши методы определены внутри __init__() метода, просто переместите их за пределы __init__() , это просто проблема с уровнем отступа. Тогда у вас возникнет другая проблема, хотя

Ответ №1:

Вам не хватает ссылок на self в ваших методах класса. Попробуйте это:

 class BankAccount:
    def __init__(self, full_name, account_number, routing_number, balance):
        self.full_name = full_name
        self.account_number = account_number
        self.routing_number = routing_number
        self.balance = balance

        def deposit(self, amount):
            self.balance  = amount
            print("n Amount Deposited:", amount)

        # Function to withdraw the amount
        def withdraw(self):
            amount = float((input("Enter a amount")))
            if self.balance >= amount:
                self.balance -= amount
                print("n You Withdrew", amount)
            else:
                print("n Insufficient funds.")
                self.balance - 10
        # Function to display the amount

        def display_balance(self):
            print("n You have ", self.balance)

        def add_interest(self, balance):
            interest = self.balance * 0.00083

        def print_receipt(self):
            print(self.full_name)
            print("Account Number: "   self.account_number)
            print("routing number: "   self.routing_number)
            print("balance:"   self.balance)
  

Кроме того, вы вызываете display() функцию, которая не определена в вашем классе. Я полагаю, вы хотите использовать display_balance() .

Наконец, когда вы вызываете withdraw() функцию, вы вводите значение в качестве аргумента функции, но функция не предназначена для приема каких-либо аргументов. То, как вы его написали, запрашивает ввод пользователя в командной строке. Если вы хотите, чтобы он принимал аргументы вместо этого, вы можете переопределить его следующим образом:

 # Function to withdraw the amount
def withdraw(self, amount):
    if self.balance >= amount:
        self.balance -= amount
        print("n You Withdrew", amount)
    else:
        print("n Insufficient funds.")
        self.balance - 10