我有一个程序,我将使用继承:
class Templates(object):
def __init__(self, esd_user, start_date,
summary, ticket_number, email_type):
self.esd = esd_user
self.strt_day = start_date
self.sum = summary
self.ticket = ticket_number
self.email = email_type
def gather_intel(self):
if self.email == "pend":
PendingEmail(self.esd, self.ticket,
self.strt_day)
elif self.email == "generic":
GenericEmail(self.esd, self.ticket,
self.strt_day)
elif self.email == "resolve":
ResolveEmail(self.esd, self.ticket,
self.strt_day)
elif self.email == "osha":
OshaEmail(self.esd, self.ticket,
self.strt_day)
else:
return False
class PendingEmail(Templates):
pass
class GenericEmail(Templates):
pass
class ResolveEmail(Templates):
pass
class OshaEmail(Templates):
pass
我是否可以使用__init__
类中的Templates
作为其他继承类的__init__
,而无需重写__init__
方法?这里是否需要拨打super
?
例如,这是从主__init__
类继承Templates
函数的正确方法吗?
class PendingEmail(Templates):
def __init__(self):
super(Templates, self).__init__()
答案 0 :(得分:1)
如果您不需要为子类的__init__
添加任何内容,只是不要实现它,它们将自动继承它。否则,对于需要进一步初始化的情况,您会有点休息:
class PendingEmail(Templates):
def __init__(self):
super(PendingEmail, self).__init__() # Name your own class, not the super class
答案 1 :(得分:0)
与任何其他方法一样,类会自动从其超类继承__init__
。你想要实现的目标已经发生。
答案 2 :(得分:0)
如果您未在子类中定义__init__
方法,则仍会调用基类__init__
。如果你定义了一个,那么你需要像你在任何其他需要的行动之前/之后所描述的那样明确地调用它。 super的第一个参数是调用它的类。