ООП в Python. Как мне сделать метод класса? - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь создать программу (для домашнего задания), которая создает разные учетные записи и позволяет вносить / снимать деньги с нее. Я также должен показывать баланс всех учетных записей при запросе с Account.totalAllBalance. Все идет хорошо, но я пытаюсь выяснить, как добавить начальные остатки к моему итоговому итогу AllBalance. Я продолжаю получать эту ошибку, и я не уверен, почему. Я довольно новичок в программировании, и я должен использовать очень простое программирование, которое мы делаем в классе. У меня вопрос, почему я получаю эту ошибку и как ее исправить?

Ошибка в строке 20, в которой написано

in init Account.totalAllBalance = Account.totalAllBalance + num Ошибка типа: неподдерживаемые типы операндов для +: 'method' и 'int'

Пока это моя попытка:

class Account:
    totalAllBalance = 0
    totalAccounts = 0

    def __init__(self, name, startBalance):
        self.name = name
        self.startBalance = startBalance
        num = startBalance
        if self.startBalance < .01:
            print("You may not start an account with that balance.")
        else :
            self.deposits = 0
            self.withdraws = 0
            Account.totalAccounts += 1
            if Account.totalAccounts is 1:
                Account.totalBalance = 0
            else:
               Account.totalAllBalance = Account.totalAllBalance + num

    def deposit(self, num):
        self.deposits += num
        print(self.name, "has deposited", num, "dollars.")
        Account.totalAllBalance = Account.totalAllBalance + num
        return(self.totalBalance())


    def withdraw(self, num):
        self.withdraws += num 
        if num > self.startBalance + -1*(self.withdraws-num) + self.deposits:
            print("You may not withdraw more than your balance.")
            self.withdraws -= num
        else:  
            num2= -1 * num
            print(self.name, "has withdrawn", num,"dollars.")
            return(self.totalBalance())
        Account.totalAllBalance = Account.totalAllBalance + num2

    def totalBalance(self):
        if self.withdraws is None:
            W = 0
        if self.deposits is None:
            D = 0
        S = self.startBalance 
        W = self.withdraws * -1 
        D = self.deposits
        num = S + W + D
        print(self.name,"has", S + W + D , "dollars in their account.")

    @classmethod
    def totalAllBalance(cls):
        print(cls.totalAllBalance)

    @classmethod
    def amtAccounts(cls):
        print("There is", cls.totalAccounts, "account(s).")

1 Ответ

0 голосов
/ 13 ноября 2018

Причина в том, что у вас есть totalAllBalance как метод класса, так и свойства класса. В дополнение к этому, способ, которым вы обращаетесь к Account.totalAllBalance, заставляет компилятор интерпретировать как метод, а не свойства. Я бы предложил использовать self.totalAllBalance вместо этого и иметь другое имя для вашего метода класса (например, printTotalAllBalance)

def deposit(self, num):
    self.deposits += num
    print(self.name, "has deposited", num, "dollars.")
    self.totalAllBalance = self.totalAllBalance + num
    return(self.totalBalance())

@classmethod
def printTotalAllBalance(cls):
    print(cls.totalAllBalance)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...