简短的答案是object . init
()方法不执行任何 *** 作,只是检查是否已传入任何参数。有关详细信息,请参见源。
在 Service 实例上调用时,
super() 调用将委派给object
. init (),并且不会发生任何事情。
但是,当调用 Service 子类的实例时,事情会变得更加有趣。该 超() 调用有可能委托给一些类以外 的对象 ,一类是实例的父但不是家长
服务
。有关它如何工作以及为什么有用的详细信息,请参阅博客文章Python的“超级被认为是超级”!
下面的例子(有点做作)所示的一个子类如何 服务 可能会导致 超级 呼叫 服务 被定向到另一个名为类 颜色 :
class Service(object): def __init__(self, host, binary, topic, manager, report_interval=None, periodic_interval=None, *args, **kwargs): print 'Initializing Service' super(Service, self).__init__(*args, **kwargs)class Color(object): def __init__(self, color='red', **kwargs): print 'Initializing Color' self.color = color super(Color, self).__init__(**kwargs)class ColoredService(Service, Color): def __init__(self, *args, **kwds): print 'Initializing Colored Service' super(ColoredService, self).__init__(*args, **kwds)c = ColoredService('host', 'bin', 'top', 'mgr', 'ivl', color='blue')
在示例中,初始化按以下顺序进行:
- 初始化有色服务
- 初始化服务
- 初始化颜色
- 初始化对象-除了参数检查外什么也不做
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)