Я хотел бы унаследовать от numpy.float
, чтобы создать cash
класс.
class Cash(numpy.float):
def __init__(self, amount, currency='$'):
super().__init__()
self.amount = amount
self.currency = currency
def __str__(self):
return f"Cash({round(self.amount, 2)}{self.currency})"
Какова была бы лучшая стратегия для обеспечения того, чтобы этот класс был неотрицательным во время арифмитики?Например, этот тестовый метод возвращает -2.0
, но я хочу, чтобы он вызвал ValueError.
def test_sub1(self):
c1 = Cash(4.00)
c2 = Cash(6)
self.assertEqual(2, c1 - c2)