我对super()
有点困惑。 self.order = order
应该在它之前还是之后?当我测试它时,它似乎都可以工作。我只是经常使用它,所以我认为这很好,我更好地理解了。
def __init__(self, order, *args, **kwargs):
self.order = order # BEFORE OR AFTER __init__?
super().__init__(*args, **kwargs)
答案 0 :(得分:2)
通常,我们希望子类的所有已定义行为都可以覆盖父类的行为,因此通常应先调用super().__init__(*args, **kwargs)
,然后再使用子代自己的版本覆盖父类的选择性实例变量。
但是,在某些情况下,您希望子类中的父类的__init__()
具有不同的行为,可以通过先修改args
和/或kwargs
来做到这一点。调用父类的__init__()
。
因此,这实际上取决于您希望子类如何自定义父类。
答案 1 :(得分:0)
取决于类,但是在大多数情况下都没有关系。
我倾向于先super().__init__(*args, **kwargs)
,除非有理由不这样做(例如,在kwargs
被修改之前修改它)。