与标题相同。例如:
class A:
def __init__(self,name):
self.name=name
class B(A):
def __init__(self,surname):
self.surname=surname
obj=B('somename','somesurname')
如果允许的话,我应按什么顺序在对象实例化中传递参数?
答案 0 :(得分:0)
您需要从派生类中显式调用超类的构造函数:
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')
答案 1 :(得分:0)
您应该使用super
内置函数:
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')
答案 2 :(得分:0)
如果必须执行旧构造函数,则新构造函数应调用父构造函数。您可以使用super
来调用parent构造函数:
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')
在python 2中,您必须指定当前类和self作为super()
的参数:super(B, self)
,在python 3中,可以像上面所示的那样不带参数地调用它。