创建一个Person类,属性有name、weight,分别是姓名、体重,要求改写__str__方法,使得打印Person类的对象时,显示结果为该对象的姓名和体重;创建一个Sportman类,其继承Person类,Sportman类具有两个方法: eat方法,表示每次吃东西体重会增加1公斤;run方法,表示每次运动体重会减少0.5公斤;程序中创建一个Sportman对象(姓名和初始体重值自定),并通过调用eat和run方法改变这个对象的体重,并重新打印该对象。
时间: 2023-12-21 12:03:29 浏览: 29
下面是对应的代码实现:
```python
class Person:
def __init__(self, name, weight):
self.name = name
self.weight = weight
def __str__(self):
return f"Person(name={self.name}, weight={self.weight})"
class Sportman(Person):
def eat(self):
self.weight += 1
def run(self):
self.weight -= 0.5
if __name__ == '__main__':
sportman = Sportman('张三', 70)
print(sportman) # 输出:Person(name=张三, weight=70)
sportman.eat()
sportman.run()
print(sportman) # 输出:Person(name=张三, weight=70.5)
```
上述代码中,我们首先定义了一个 `Person` 类,其中包含了两个属性 `name` 和 `weight`,分别表示姓名和体重。在 `__str__` 方法中,我们将该类对象的属性值以字符串的形式返回,便于输出该对象时展示其属性值。
接下来,我们定义了一个 `Sportman` 类,它继承自 `Person` 类。在 `Sportman` 类中,我们定义了两个方法 `eat` 和 `run`,分别表示吃东西和运动。这两个方法会改变 `Sportman` 对象的体重值。注意,在 `Sportman` 类中我们没有定义 `__str__` 方法,因为它直接继承了 `Person` 类中的 `__str__` 方法。
最后,在程序的主入口中,我们创建了一个 `Sportman` 对象 `sportman`,并调用其 `eat` 和 `run` 方法来改变其体重值。最后通过 `print` 函数打印 `sportman` 对象,会调用 `Person` 类中的 `__str__` 方法,输出该对象的姓名和体重。运行上述代码,会得到如下的输出结果:
```
Person(name=张三, weight=70)
Person(name=张三, weight=70.5)
```