我有一个程序,我将在其中使用继承:
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是否可以使用Templates类中的__init__作为其他继承类的__init__,而不必重写__init__方法?这里需要调用super吗?
例如,这是从主Templates类继承__init__函数的正确方式吗?
class PendingEmail(Templates):
def __init__(self):
super(Templates, self).__init__()发布于 2016-09-26 09:31:15
如果您不需要向子类的__init__中添加任何内容,只要不实现它,它们就会自动继承它。否则,在需要进行进一步初始化的情况下,您就有点不对劲了:
class PendingEmail(Templates):
def __init__(self):
super(PendingEmail, self).__init__() # Name your own class, not the super class发布于 2016-09-26 09:31:51
与任何其他方法一样,类自动从它们的超类继承__init__。你想要实现的目标已经实现了。
发布于 2016-09-26 09:32:04
如果你没有在你的子类中定义__init__方法,你的基类__init__仍然会被调用。如果您定义了一个,那么您需要显式地调用它,就像您在需要的任何其他操作之前/之后所描述的那样。super的第一个参数是它被调用的类。
https://stackoverflow.com/questions/39693512
复制相似问题