đơn giản, trọng lượng nhẹ, tuy nhiên ý tưởng mở rộng:
class Money():
def __init__(self, value):
# internally use Decimal or cents as long
self._cents = long(0)
# Now parse 'value' as needed e.g. locale-specific user-entered string, cents, Money, etc.
# Decimal helps in conversion
def as_my_app_specific_protocol(self):
# some application-specific representation
def __str__(self):
# user-friendly form, locale specific if needed
# rich comparison and basic arithmetics
def __lt__(self, other):
return self._cents < Money(other)._cents
def __add__(self, other):
return Money(self._cents + Money(other)._cents)
Bạn có thể:
- Thực hiện những gì bạn cần trong ứng dụng của bạn.
- Kéo dài khi bạn phát triển.
- Thay đổi cách trình bày và triển khai nội bộ nếu cần.
Tôi luôn nghĩ rằng chuyển đổi tiền tệ chỉ là phép nhân. – SilentGhost
@SilentGhost: Có và không. Bạn phải ghi nhớ * cách * bạn sẽ sử dụng các giá trị mà bạn có. Làm thế nào để bạn làm khi bạn trả U $ S2000 + AR $ 6300 + € 1500 năm ngoái và năm nay bạn đã trả U $ S4000 + AR $ 1200 + € 500?Có nhiều thứ bạn phải tính đến, vì vậy đối tượng 'Money' sẽ cần lưu giá trị hiện tại * và * giá trị hiện tại. – voyager
Hư hỏng cần tránh: sử dụng số dấu phẩy động. Xem không gian văn phòng. –