python - 如何在 Python 中更改继承方法的文档字符串?
问题描述
假设我有一个如下的类结构:
class BaseClass(object):
def divide_reward_by_x(self, x, data):
"""
Args:
x: float
Return:
Reward value
"""
return self.reward(data) // x
class SubClass1(BaseClass):
def reward(self, data):
"""
Args:
data: one-dimensional numpy array
Return:
float of reward value
"""
return np.sum(data)
class SubClass2(BaseClass):
def reward(self, data):
"""
Args:
data: one-dimensional numpy array
Return:
one-dimensional numpy array of reward value
"""
return data + 1
请注意,reward
对于 SubClass1 返回一个浮点数,但reward
对于 SubClass2 返回一个 numpy 数组。这意味着当divide_reward_by_x
为 SubClass1 调用时,它将返回一个浮点数,但当为 SubClass2 调用它时,它将返回一个 numpy 数组。我希望 SubClass 文档能够反映这一点。换句话说,代码本身并不特定于子类,但文档应该是!
用最少的文档和代码重复来做到这一点的最 Pythonic 的方法是什么?
我认识以下解决方案,但想知道是否有更“极简”和“pythonic”的方式:
class BaseClass(object):
def _divide_reward_by_x(self, x, data):
return self.reward(data) // x
class SubClass1(BaseClass):
def reward(self, data):
"""
Args:
data: one-dimensional numpy array
Return:
float of reward value
"""
return np.sum(data)
def divide_reward_by_x(self, x, data):
"""
Args:
x: float
Return:
Float of reward value
"""
return self._divide_reward_by_x(x, data)
class SubClass2(BaseClass):
def reward(self, data):
"""
Args:
data: one-dimensional numpy array
Return:
one-dimensional numpy array of reward value
"""
return data + 1
def divide_reward_by_x(self, x, data):
"""
Args:
x: float
Return:
numpy array of reward value
"""
return self._divide_reward_by_x(x, data)
解决方案
推荐阅读
- python - 我下载了这个脚本
- java - 一旦达到超时,如何让 TestNG 方法终止?
- machine-learning - 哪种监督机器学习分类方法适合随机分布的类?
- python - 如何比较 2 个单独数据框中的 2 列无序列表?
- python - 'ReturnList' 对象在 django restframework 中没有属性'get'
- python - ValueError:未知标签类型:DecisionTreeClassifier() 中的“连续”
- c++ - 优化。如何加速给定的 C++ 代码?
- r - 在 for 循环中提取数据并将其附加到新数据集
- c++ - 每次新分配的 C++ 指针是否都分配了相同的地址?
- javascript - 我如何使用 jquery 检查获胜者