2.定义一个快递包裹类 Package ,并由此派生出普通包裹类和加急包裹类。要求: (1) Package 类应包含寄件人和收件人姓名、地址和包裹重量属性,按重量*10计费。(2)普通包裹增加首重计费和超首重后部分的的每公斤计费单价属性,按首重+超重*每公斤计费单价计算总费用。 (3)加急包裹没有首重限制,但有加急起价费用属性,按加急起价费+重 (4)为每个类添加 calculateCost 计算快递费用方法。编写测试程序,创建 量*10+加急公里数*0.02计算总费用。 每种包裹类的对象并测试 calculateCost 方法。
时间: 2024-03-23 16:43:37 浏览: 49
以下是实现题目要求的代码:
```python
# 定义快递包裹类 Package
class Package:
def __init__(self, sender, receiver, sender_addr, receiver_addr, weight):
self.sender = sender
self.receiver = receiver
self.sender_addr = sender_addr
self.receiver_addr = receiver_addr
self.weight = weight
# 计算快递费用方法
def calculateCost(self):
return self.weight * 10
# 定义普通包裹类 NormalPackage,继承自 Package
class NormalPackage(Package):
def __init__(self, sender, receiver, sender_addr, receiver_addr, weight, first_weight, extra_cost):
super().__init__(sender, receiver, sender_addr, receiver_addr, weight)
self.first_weight = first_weight
self.extra_cost = extra_cost
# 计算快递费用方法
def calculateCost(self):
if self.weight <= self.first_weight:
return self.first_weight * self.extra_cost
else:
return self.first_weight * self.extra_cost + (self.weight - self.first_weight) * self.extra_cost
# 定义加急包裹类 ExpressPackage,继承自 Package
class ExpressPackage(Package):
def __init__(self, sender, receiver, sender_addr, receiver_addr, weight, express_price):
super().__init__(sender, receiver, sender_addr, receiver_addr, weight)
self.express_price = express_price
# 计算快递费用方法
def calculateCost(self):
return self.express_price + self.weight * 10 + self.weight * 0.02
# 测试程序
np = NormalPackage("Sender", "Receiver", "Sender Address", "Receiver Address", 15, 5, 8)
ep = ExpressPackage("Sender", "Receiver", "Sender Address", "Receiver Address", 15, 20)
print("普通包裹费用为:", np.calculateCost())
print("加急包裹费用为:", ep.calculateCost())
```
首先定义了一个快递包裹类 Package,包含了寄件人和收件人姓名、地址和包裹重量属性,并在 calculateCost 方法中按重量×10来计算快递费用。
然后,定义了一个普通包裹类 NormalPackage,增加了首重计费和超首重后部分的每公斤计费单价属性,并在 calculateCost 方法中按首重+超重×每公斤计费单价来计算总费用。
最后,定义了一个加急包裹类 ExpressPackage,增加了加急起价费用属性,并在 calculateCost 方法中按加急起价费+重量×10+重量×0.02来计算总费用。
在测试程序中,创建了一个 NormalPackage 对象 np 和一个 ExpressPackage 对象 ep,并分别调用它们的 calculateCost 方法计算快递费用。
需要注意的是,加急包裹的费用计算还要加上每公里0.02元的加急费用。
阅读全文