实现一个 Transaction 类,该类接受 amount、date、currency (默认为 USD)、 USD 转换汇率(usd_conversion_rate,默认为 1)等属性。所有数据属性都必 须是私有属性。该类提供对如下信息的只读获取功能:amount、date、currency、 usd_conversion_rate、description、usd (amount*usd_conversion_rate)
时间: 2024-04-11 19:26:43 浏览: 90
以下是一个实现了Transaction类的示例代码:
```python
class Transaction:
def __init__(self, amount, date, currency='USD', usd_conversion_rate=1):
self.__amount = amount
self.__date = date
self.__currency = currency
self.__usd_conversion_rate = usd_conversion_rate
@property
def amount(self):
return self.__amount
@property
def date(self):
return self.__date
@property
def currency(self):
return self.__currency
@property
def usd_conversion_rate(self):
return self.__usd_conversion_rate
@property
def description(self):
return f"Transaction of {self.amount} {self.currency} on {self.date}"
@property
def usd(self):
return self.amount * self.usd_conversion_rate
# 测试示例
transaction = Transaction(100, '2022-01-01', 'CNY', 0.15)
print(transaction.amount) # 100
print(transaction.date) # 2022-01-01
print(transaction.currency) # CNY
print(transaction.usd_conversion_rate) # 0.15
print(transaction.description) # Transaction of 100 CNY on 2022-01-01
print(transaction.usd) # 15.0
```
在这个示例中,我们定义了一个Transaction类,它接受amount、date、currency和usd_conversion_rate作为属性。这些属性都是私有属性,因此在类外部无法直接访问。
我们使用@property装饰器为每个属性提供了只读的获取功能。例如,通过`transaction.amount`就可以获取amount属性的值。description属性是一个只读的计算属性,根据其他属性的值生成一个描述字符串。usd属性是根据amount和usd_conversion_rate计算得到的,也是一个只读属性。
在示例中,我们创建了一个transaction对象,并打印出各个属性的值。输出结果为:
```
100
2022-01-01
CNY
0.15
Transaction of 100 CNY on 2022-01-01
15.0
```
您可以根据需要修改属性的默认值和测试数据,并测试不同的情况。
阅读全文