exception_1.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. class Wallet:
  2. def __init__(self, currency, balance):
  3. if not isinstance(currency, str):
  4. raise TypeError("Неверный тип валюты")
  5. elif len(currency) != 3:
  6. raise NameError("Неверная длина названия валюты")
  7. elif not currency.isupper():
  8. raise ValueError("Название должно состоять только из заглавных букв")
  9. self.currency = currency
  10. self.balance = balance
  11. def __eq__(self, value):
  12. if not isinstance(value, Wallet):
  13. raise TypeError(f"Wallet не поддерживает сравнение с {value}")
  14. elif self.currency != value.currency:
  15. raise ValueError("Нельзя сравнить разные валюты")
  16. else:
  17. return self.balance == value.balance
  18. def __add__(self, value):
  19. if not isinstance(value, Wallet):
  20. raise ValueError("Данная операция запрещена")
  21. elif self.currency != value.currency:
  22. raise ValueError("Данная операция запрещена")
  23. else:
  24. return Wallet(self.currency, self.balance + value.balance)
  25. def __sub__(self, value):
  26. if not isinstance(value, (Wallet)):
  27. raise ValueError("Данная операция запрещена")
  28. elif self.currency != value.currency:
  29. raise ValueError("Данная операция запрещена")
  30. else:
  31. return Wallet(self.currency, self.balance - value.balance)
  32. def main():
  33. '''
  34. wallet1 = Wallet('USD', 50)
  35. wallet2 = Wallet('RUB', 100)
  36. wallet3 = Wallet('RUB', 150)
  37. wallet4 = Wallet(12, 150) # исключение TypeError('Неверный тип валюты')
  38. wallet5 = Wallet('qwerty', 150) # исключение NameError('Неверная длина названия валюты')
  39. wallet6 = Wallet('abc', 150) # исключение ValueError('Название должно состоять только из заглавных букв')
  40. print(wallet2 == wallet3) # False
  41. print(wallet2 == 100) # TypeError('Wallet не поддерживает сравнение с 100')
  42. print(wallet2 == wallet1) # ValueError('Нельзя сравнить разные валюты')
  43. wallet7 = wallet2 + wallet3
  44. print(wallet7.currency, wallet7.balance) # печатает 'RUB 250'
  45. wallet2 + 45 # ValueError('Данная операция запрещена')
  46. '''
  47. '''
  48. try:
  49. int('sdfawsdf')
  50. except ValueError:
  51. print('!!!!')
  52. '''
  53. if __name__ == '__main__':
  54. main()