允许在Python中使用子类构造函数吗

2024-04-25 14:21:36 发布

您现在位置:Python中文网/ 问答频道 /正文

如标题所示。例如:

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

class B(A):
    def __init__(self,surname):
        self.surname=surname

obj=B('somename','somesurname')

如果允许的话,我应该以什么顺序在对象实例化中传递参数


Tags: 对象实例nameselfobj标题参数顺序
3条回答

如果必须执行旧构造函数,则新构造函数应调用父构造函数。您可以使用^{}调用父构造函数:

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

class B(A):
    def __init__(self, name, surname):
        super().__init__(name)
        self.surname = surname

obj = B('somename', 'somesurname')

在Python2中,必须将当前类和self指定为super():super(B, self)的参数,在Python3中,可以不使用参数调用它,如上图所示

您应该使用^{}内置函数:

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

class B(A):
    def __init__(self, name, surname):
        super().__init__(name)
        self.surname=surname

obj=B('somename','somesurname')

您需要从派生类显式调用超类的构造函数:

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

class B(A):
    def __init__(self, name, surname):
        super().__init__(name)
        self.surname=surname

obj=B('somename','somesurname')

相关问题 更多 >

    热门问题