请使用面向对象的知识,该类有两个属性,分别代表父子年龄差值和当前父亲年龄是儿子年龄的数倍;一个构造函数,要求父子年龄通过构造函数传入;一个公有方法,该方法返回值即父亲年龄变为儿子年龄2倍所需经过的年数。
时间: 2024-02-29 19:52:53 浏览: 114
好的,我理解了您的问题。下面是一个面向对象的 Python 示例:
```python
class AgeDiff:
def __init__(self, father_age, son_age):
self.age_diff = father_age - son_age
self.is_double = father_age == son_age * 2
def get_years_to_double(self):
if self.is_double:
return 0
else:
return self.age_diff / 3
```
在上面的代码中,我们定义了一个名为 `AgeDiff` 的类。它有两个属性,一个是 `age_diff`,代表父子年龄差值,另一个是 `is_double`,代表当前父亲年龄是否是儿子年龄的两倍。构造函数 `__init__` 接收两个参数:父亲年龄和儿子年龄,并根据这两个参数计算出 `age_diff` 和 `is_double` 属性。公有方法 `get_years_to_double` 返回值即父亲年龄变为儿子年龄2倍所需经过的年数。如果当前父亲年龄已经是儿子年龄的两倍,那么返回 0,否则返回 `age_diff / 3`。因为父亲年龄每次增加 3 岁,才能使得年龄翻倍。
使用该类的示例代码如下:
```python
age_diff = AgeDiff(45, 15)
print(age_diff.get_years_to_double()) # 输出 10.0
age_diff = AgeDiff(50, 25)
print(age_diff.get_years_to_double()) # 输出 0
```
在上面的示例中,我们分别创建了两个 `AgeDiff` 对象,并调用了 `get_years_to_double` 方法。第一个例子中,父亲年龄是儿子年龄的 3 倍,所以返回值是 10。第二个例子中,父亲年龄已经是儿子年龄的两倍,所以返回值是 0。
阅读全文