Добавить и вычесть значения между объектами - PullRequest
0 голосов
/ 08 марта 2019

как я могу сложить и вычесть значения между двумя объектами? У меня есть задание, и мне нужно сделать какие-то банковские счета как объекты. И переводить деньги между ними.

class Account():
def __init__(self, name, balance, number):
    self.name = name
    self.balance = balance
    self.number = number
def transfer(self, amount):
    self.amount = amount
    if self.balance >= amount:
        self.balance = self.balance - amount
    else:
        print("Sorry but you do not have enough funds on your account")

def add(self, add):
    self.add = add
    self.balance = self.balance + add

def show(self):
    print("Hello", self.name, "your current balance is:", self.balance)
acc_1 = Account("Darren William", 2000.50, 3694586)
acc_2 = Account("Jamie Lanister", 7500.34, 3687756)

acc_1.show()
acc_1.transfer(300.89)
acc_1.show()
acc_1.add(500.47)
acc_1.show()

Так что сейчас я сделал методы, чтобы сложить и вычесть x сумму денег из одного объекта. Но как я могу подключить его между аккаунтом. Например, если я вычту из acc_1 100, добавлю 100 к acc_2.

Ответы [ 2 ]

0 голосов
/ 09 марта 2019

, если у вас есть два метода для перевода для учетной записи, которая зачисляется на сумму, и Transfer_to для учетной записи, которая дебетуется, программа будет работать.

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

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

def transfer_to(self, amount, dest_account):
    if self.balance >= amount:
        self.balance -= amount
        dest_account.transfer(amount)
        print('Balance',amount,'transferred successfully')
    else:
        print('Error. You don\'t have enough balance in your account')
0 голосов
/ 09 марта 2019

Предлагаю сделать два занятия.Одна - это сама учетная запись, а другая - менеджер учетных записей, что-то вроде этого:

class Account():
    def __init__(self, name, balance, number):
        self.name = name
        self.balance = balance
        self.number = number

    # This method checks if we have enough money
    def hasBalance(self, amount):
        if amount <= self.balance:
            return True
        else:
            print("Sorry but you do not have enough funds on your account")
            return False

    # We need to check twice if you have the money to be sure
    def transfer(self, amount):
        if self.hasBalance(amount):
            self.balance = self.balance - amount

    def add(self, add):
        self.balance = self.balance + add

class AccountsManager():

    def __init__(self):
        self.accounts = []

    def addAccount(self, clientName, clientBalance, clientId):
        self.accounts.append(Account(clientName, clientBalance, clientId))

    # This method has 3 parameters
    # fromNumber : Client ID from the first account (sender)
    # toNumber : Client ID from the second account (recipent)
    # amount : Amount of money to transfer
    def transfer(self, fromNumber, toNumber, amount):

        fromAccount = self.getById(fromNumber)
        toAccount = self.getById(toNumber)

        if fromAccount != None:
            if toAccount != None:
                if fromAccount.hasBalance(amount):
                    print ("Transfer completed successfully!")
                    fromAccount.transfer(amount)
                    toAccount.add(amount)
            else:
                print ("Recipent account do not exist!")
        else:
            print ("Sender account do not exist!")


    # Check in the accounts array if there is an Account objet with
    # the number property equals to 'clientId'
    def getById (self, clientId):
        for account in self.accounts:
            if account.number == clientId:
                return account
            else:
                account = None

    def getInfo(self):
        for account in self.accounts:
            print("->", account.name, account.balance, account.number)

accountsManager = AccountsManager()
accountsManager.addAccount("Darren William", 100, 1)
accountsManager.addAccount("Jamie Lanister", 100, 2)

accountsManager.getInfo()

accountsManager.transfer(1,2,25)

accountsManager.getInfo()

Так что теперь вы можете лучше контролировать свои учетные записи и иметь отдельную логику для каждой из них.Конечно, вы можете улучшить это, если хотите лучше контролировать учетные записи, возможно, используя словари.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...