1。将配置传递给隐含调用__init__
的{{1}}方法:
register
2。在子类'class Base:
def __init__(self, *verbs):
if not verbs:
verbs = "get", "post"
self._register(verbs)
def _register(self, *verbs):
pass
class Sub(Base):
def __init__(self):
super().__init__("get", "post", "put")
方法中明确地调用register
:
__init__
我使用Python 3。
什么是更好或更pythonic?或者只是品味问题?
答案 0 :(得分:3)
我认为这些选择都不好。最接近的解决方案可能是:
class Base(object):
def __init__(self):
self._register("get", "post")
class Sub(Base):
def __init__(self):
super(Sub, self).__init__()
self._register("put")
我也想知道在班级注册动词是否更好。对于所有实例,它们可能都是相同的,那么为什么它们会单独为每个实例注册?
答案 1 :(得分:0)
如果扩展基类的所有内容都是这样的,我会亲自从基类的构造函数调用。如果没有,并且行为有所不同,我会从子类中调用......
至于Pythonic是什么 - 不要订阅邪教 - 编写有效的代码......
马丁
答案 2 :(得分:0)
答案 3 :(得分:0)
我肯定会使用第一种形式。我会问自己的问题是:“如果基类的初始化被修改,有一天怎么办?我想让子类从更新中受益吗?”。几乎在我的所有代码中,答案都是响亮的......:)