获取以下代码段
class CreditCard:
def __init__(self,customer,bank,acnt,limit):
....
....
class PredatoryCreditCard(CreditCard):
def__init__(self,customer,bank,acnt,limit):
....
super().__init__(customer,bank,acnt,limit)
是否总是需要在子类中编写def__init__(self,customer,bank,acnt,limit):
?还是super().__init__(customer,bank,acnt,limit)
会完成工作?
如果子类中使用了另一个新参数newattr
,那么它应该包含在__init__()
方法中还是使用self._newattr= newattr
声明就足够了?
答案 0 :(得分:0)
除非您的子类定义了__init__
方法,否则它将继承其父级的__init__
方法。因此,两者之间没有区别
class A(Parent):
def __init__(self,customer,bank,acnt,limit):
super().__init__(customer, bank, acnt, limit)
和
class A(Parent):
pass
如果您需要对该类的实例进行特定的配置,则只需要使用自己的实现覆盖__init__
方法即可。
class PredatoryCreditCard(CreditCard):
def __init__(self,customer, bank, acnt, limit, newattr):
super().__init__(customer, bank, acnt, limit)
self._newattr = newattr
所有特定于实例的属性的设置都应在__init__
方法中进行。
此继承行为对__init__
的对待与其他任何方法都不相同。