当代码仍然运行时,我是否需要始终需要在子类中使用 init 来实例化父类?

She*_*hee 7 python oop inheritance init super

对于这个例子,我是否总是需要实例化父类,因为当我删除它时它仍然有效?

class Person:
    def __init__(self, name):
        self.name = name    

    @property
    def name(self):
        return self._name

    @name.setter
    def name(self, value):
        self._name = value


class SubPerson(Person):

    # Do I need this an init call? If I remove this init call, it still runs
    def __init__(self, name):
        super().__init__(name)

    @property
    def name(self):
        return super().name 

    @name.setter
    def name(self, value):
        return super(SubPerson, SubPerson).name.__set__(self, value)


s = SubPerson("John") 
print(s.name) //John
Run Code Online (Sandbox Code Playgroud)

谢谢你!

Ada*_*ith 8

绝对不。典型的模式是,子级可能有需要设置父级没有的额外字段,但如果您__init__完全省略该方法,那么它会从父级继承它,这在您的情况下是正确的行为。