IMO powinieneś zapisać precision jako 3 parametr
def __init__(self, amount: Decimal, currency: str, precision: int = 2):
self.amount = amount
self.currency = currency
self.precision = precision
no i dodać formatowanie do __str__ w oparciu o self.precision np.
{self.amount:.{self.precision}f}
def __str__(self):
return f"{self.amount:.{self.precision}f} {self.currency}"
przykład on-line lub on-line.