【发布时间】:2019-07-26 13:18:57
【问题描述】:
给定这样的子父结构:
class Parent:
def __init__(self, param1=1, param2=2, param3=3, param4=4):
"""
Parent docstring here
:param param1: param1 stuff
:param param2: param2 stuff
:param param3: param3 stuff
:param param4: param4 stuff
"""
self.param1 = param1
self.param2 = param2
self.param3 = param3
self.param4 = param4
class Child(Parent):
def __init__(self, param1=1, param2=2, param3=3, param4=4,
child_param1='a', child_param2='b', child_param3='c'):
"""
Child implementation of parent.
:param param1: do I need this again???
:param param2: do I need this again???
:param param3: do I need this again???
:param param4: do I need this again???
:param child_param1: child parameter 1
:param child_param2: child parameter 2
:param child_param3: child parameter 3
"""
super().__init__(param1, param2, param3, param4)
self.child_param3 = child_param3
self.child_param1 = child_param1
self.child_param2 = child_param2
在不重复父级文档字符串和每个单独参数的情况下实现子级的正确方法是什么?我希望从父级继承参数描述。我也不想每次从父级继承时都重新指定默认值。我可以这样做,但这似乎不是正确的方法:
class Child(Parent):
def __init__(self, child_param1='a', child_param2='b', child_param3='c', **parent_args):
super(**parent_args)
# rest of the code goes here...
【问题讨论】:
-
我猜你可以做
self.__init__.__doc__ = super().__init__.doc__。对于参数,您的最后一个示例确实对我来说似乎是正确的方法。 -
将 kwargs 传递给父级是很常见的。我在很多项目中都看到过。我不知道这是否是一个好习惯。
标签: python oop inheritance docstring