我仍然需要始终在子类中使用init来实例化父类,因为代码仍在运行吗?

问题描述

在此示例中,我是否还总是需要实例化父类,因为在删除它时它仍然可以工作?

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

谢谢!

解决方法

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...