How to call an instance inside class methods?

Question:

class Purse:
    def __init__(
        self,
        owner,
        currency="USD",
    ):
        if currency not in ("EUR", "USD"):
            raise ValueError
        self.owner = owner
        self.__money = 0.00  
        self.currency = currency

        def withdraw_money(self, howmany):
    if self.__money - howmany < 0:
        raise ValueError("not enough balance")
    self.__money = self.__money - howmany
    return howmany

    def add_money(self, howmany): 

#How to check if instance attribute != another_instance attribute to raise ValueError?

        self.__money = self.__money + howmany
        return howmany

)

#So

name1.add_money(name2.withdraw_money(value))

should raise ValueError, if name1.currency, for instance is "USD" and name2.currency is "EUR"

Asked By: Berdnikov Artemy

||

Answers:

You should create a separate transfer_money() method for this. It will take the destination instance, and you can compare the currencies.

def transfer_money(dest, howmany):
    if self.currency != dest.currency:
        raise ValueError('source and destination use different currencies')
    dest.add_money(self.withdraw_money(howmany))
Answered By: Barmar
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.