4-1有一个水果(fruit)类。有水果名称(name), 重量(weight)和颜色(color),能够颜色等属性信息。在水果显示类上派生苹果(apple)(苹果水果的名称、重量、名称指水果的名称梨名称指定为Pear)两个类,Apple),梨(pear)(派生类中添加品种属性信息,能够显在、品种、重定为示量、颜色等属性信息。要求有构造方法能对数据成员进行初始化。 (知识点:继承,重写) 拓展:可以为水果添加品种,采摘日期,保质期等属性信息,可以查询是否在保质期内。
时间: 2023-05-11 21:07:29 浏览: 240
好的,这是一个关于继承和重写的编程问题。下面是我的回答:
可以先定义一个基类 Fruit,包含名称、重量和颜色等属性信息,然后派生出 Apple 和 Pear 两个子类,其中 Pear 类还添加了品种属性信息。
代码示例:
```python
class Fruit:
def __init__(self, name, weight, color):
self.name = name
self.weight = weight
self.color = color
class Apple(Fruit):
def __init__(self, name, weight, color):
super().__init__(name, weight, color)
class Pear(Fruit):
def __init__(self, name, weight, color, variety):
super().__init__(name, weight, color)
self.variety = variety
```
如果要拓展属性信息,可以在 Fruit 类中添加相应的属性,然后在子类中进行初始化和查询操作。
代码示例:
```python
class Fruit:
def __init__(self, name, weight, color, variety=None, harvest_date=None, shelf_life=None):
self.name = name
self.weight = weight
self.color = color
self.variety = variety
self.harvest_date = harvest_date
self.shelf_life = shelf_life
def is_fresh(self):
# 判断是否在保质期内
if self.harvest_date and self.shelf_life:
# 假设保质期为30天
days_since_harvest = (datetime.now() - self.harvest_date).days
if days_since_harvest <= self.shelf_life:
return True
return False
class Apple(Fruit):
def __init__(self, name, weight, color, variety=None, harvest_date=None, shelf_life=None):
super().__init__(name, weight, color, variety, harvest_date, shelf_life)
class Pear(Fruit):
def __init__(self, name, weight, color, variety, harvest_date=None, shelf_life=None):
super().__init__(name, weight, color, variety, harvest_date, shelf_life)
```
这样,我们就可以通过 is_fresh 方法来查询水果是否在保质期内了。
阅读全文