
class Wallet:

    def __init__(self, currency, balance):

        if not isinstance(currency, str):
            raise TypeError("Неверный тип валюты")
        elif len(currency) != 3:
            raise NameError("Неверная длина названия валюты")
        elif not currency.isupper():
            raise ValueError("Название должно состоять только из заглавных букв")
        self.currency = currency
        self.balance = balance

    def __eq__(self, value):
        if not isinstance(value, Wallet):
            raise TypeError(f"Wallet не поддерживает сравнение с {value}")
        elif self.currency != value.currency:
            raise ValueError("Нельзя сравнить разные валюты")
        else:
            return self.balance == value.balance
        
    def __add__(self, value):
        if not isinstance(value, Wallet):
            raise ValueError("Данная операция запрещена")
        elif self.currency != value.currency:
            raise ValueError("Данная операция запрещена")
        else:
            return Wallet(self.currency, self.balance + value.balance)

    def __sub__(self, value):
        if not isinstance(value, (Wallet)):
            raise ValueError("Данная операция запрещена")
        elif self.currency != value.currency:
            raise ValueError("Данная операция запрещена")
        else:
            return Wallet(self.currency, self.balance - value.balance)


def main():

    '''
    wallet1 = Wallet('USD', 50)
    wallet2 = Wallet('RUB', 100)
    wallet3 = Wallet('RUB', 150)
    wallet4 = Wallet(12, 150)  # исключение TypeError('Неверный тип валюты')
    wallet5 = Wallet('qwerty', 150)  # исключение NameError('Неверная длина названия валюты')
    wallet6 = Wallet('abc', 150)  # исключение ValueError('Название должно состоять только из заглавных букв')
    print(wallet2 == wallet3)  # False
    print(wallet2 == 100)  # TypeError('Wallet не поддерживает сравнение с 100')
    print(wallet2 == wallet1)  # ValueError('Нельзя сравнить разные валюты')
    wallet7 = wallet2 + wallet3
    print(wallet7.currency, wallet7.balance)  # печатает 'RUB 250'
    wallet2 + 45  # ValueError('Данная операция запрещена')
    '''

    '''
    try:
        int('sdfawsdf')
    except ValueError:
        print('!!!!')
    '''



if __name__ == '__main__':
    main()