有一个水果(fruit)类。有水果名称(name), 重量(weight)和颜色(color),能够显示水果的名称、重量、颜色等属性信息。在水果类上派生苹果(apple)(苹果名称指定为Apple),梨(pear)(梨名称指定为Pear)两个类,在派生类中添加品种属性信息,能够显示水果的名称、品种、重量、颜色等属性信息。要求有构造方法能对数据成员进行初始化。
时间: 2023-05-11 09:07:35 浏览: 68
好的,这是一个简单的面向对象编程问题。以下是一个可能的解决方案:
```python
class Fruit:
def __init__(self, name, weight, color):
self.name = name
self.weight = weight
self.color = color
def display_info(self):
print(f"Name: {self.name}, Weight: {self.weight}, Color: {self.color}")
class Apple(Fruit):
def __init__(self, weight, color, variety):
super().__init__("Apple", weight, color)
self.variety = variety
def display_info(self):
super().display_info()
print(f"Variety: {self.variety}")
class Pear(Fruit):
def __init__(self, weight, color, variety):
super().__init__("Pear", weight, color)
self.variety = variety
def display_info(self):
super().display_info()
print(f"Variety: {self.variety}")
```
在这个解决方案中,我们定义了一个名为 Fruit 的基类,它有三个数据成员:name、weight 和 color,以及一个 display_info 方法,用于显示这些属性信息。然后我们定义了两个派生类:Apple 和 Pear,它们都有一个额外的数据成员 variety,并重写了 display_info 方法以显示所有属性信息。在构造方法中,我们使用 super() 函数调用基类的构造方法来初始化基类的数据成员,然后再初始化派生类的数据成员。
如果我们想要创建一个苹果对象,可以这样做:
```python
apple = Apple(100, "red", "Fuji")
apple.display_info()
```
这将输出:
```
Name: Apple, Weight: 100, Color: red
Variety: Fuji
```
如果我们想要创建一个梨对象,可以这样做:
```python
pear = Pear(200, "yellow", "Bartlett")
pear.display_info()
```
这将输出:
```
Name: Pear, Weight: 200, Color: yellow
Variety: Bartlett
```
希望这个解决方案能够满足你的需求!