Как заставить два класса взаимодействовать, используя объектно-ориентированное программирование на Python - PullRequest
0 голосов
/ 13 октября 2019

Я пытаюсь заставить два разных класса взаимодействовать как практика Python. У меня есть одна учетная запись класса. Это для симуляции банковского счета. У меня есть несколько методов, таких как снятие и депозит и т. Д. Я хочу сделать еще один очень похожий класс, называемый venmo. класс Venmo будет иметь аналогичные методы, но я хочу, чтобы класс venmo мог переводить или выводить деньги из класса Account. Я хочу, чтобы это было просто, так как это просто практика кодирования для моего класса по питону в школе. Я не пытаюсь написать какую-то высокоскоростную запутывающую программу, а просто для того, чтобы просто понять, как я могу получить доступ и обновлять экземпляры в разных классах.

Мой код ниже:

class Account:
    accountmaster = {}  # created masterlist of objects

    def __init__(self, name, balance=0):
        if name is None:
            raise Exception ('Please enter a name!')
        self.owner = name
        accountid = 1
        Account.accountmaster.update({accountid:self.owner})
        if balance <0:
            raise Exception ('Starting balance cannot be less than 0!')
        self.__balance = balance

    def __str__(self):
        return ('Account Onwer: ' + self.owner+  '\n' +'Account balance: ' + str(self.__balance) )

    def deposit(self, number):
        try: 
            number = int(number)
        except:
            raise Exception ('Please enter a digit for deposit amount!')
        if number <0:
            raise Exception ('Cannot deposit negative amount!')

        self.__balance= self.__balance + number
        print ('Deposit Accepted')

    def withdraw(self,number):
        try: 
            number = int(number)
        except:
            raise Exception ('Please enter a digit for withdraw amount!')

        if number > self.__balance:
            raise Exception ('You do not have enough money '+self.owner+'! :(')
        self.__balance= self.__balance - number
        print ('Withdrawal Accepted')

    def venmowithdraw(bankaccountnumber, number):
        obj = Account.accountmaster.get(bankaccountnumber)
        Account.withdraw(obj,number)


class venmo:

    def __init__ (self, name, balance=0,bankaccountnumber = None): # added optional bankaccountnumber
        if name == None:
            raise Exception ('Please enter a name!')
        self.owner = name
        if balance <0:
            raise Exception ('Starting balance cannot be less than 0!')
        self.__balance = balance
        if bankaccountnumber != None:
            self.bankaccountnumber = bankaccountnumber


    def transfer_2_venmo_from_bank(self, number):
        self.__balance = self.__balance + number
        Account.venmowithdraw(self.bankaccountnumber , number)

    def deposit(self, number):
        try: 
            number = int(number)
        except:
            raise Exception ('Please enter a digit for deposit amount!')
        if number <0:
            raise Exception ('Cannot deposit negative amount!')

        self.__balance= self.__balance + number
        print ('Deposit Accepted')   

    def __str__(self):
        return ('Account Onwer: ' + self.owner+  '\n' +'Account balance: ' + str(self.__balance) )
...