Как использовать классы для вызова объекта с помощью переменной? - PullRequest
1 голос
/ 29 апреля 2019

Я пытаюсь решить проблему «сохранить изменения», используя объектно-ориентированное программирование на Python. Я сделал класс:

class BankAccount:

    def __init__(self):
        self.savings = 100

    def savings (self, amount):
        self.savings = self.savings + amount
        return self.savings

    def getSavings (self):
        return self.savings

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

def main():

    account1 = BankAccount()

    file1 = open("data.txt","r")
    s = 0       # to keep track of the new savings
    for n in file1:
        n = float(n)    #lets python know that the values are floats
        z= math.ceil(n)         #rounds up to the whole digit
        amount = float(z-n)
        s = int(amount + s)
        x = (account1.savings(s))  # <<this is where the error occurs

1 Ответ

2 голосов
/ 29 апреля 2019

У вашего класса есть атрибут с именем savings, определенный в __init__, а также метод (функция) с тем же именем. Когда вы ссылаетесь на него, интерпретатор не будет знать, хотите ли вы вызвать метод или получить атрибут.

Измените имя метода с savings на другое, скажем make_savings

def make_savings(self, amount):

вместо

def savings(self, amount):

Должно работать

...