擅长:python、mysql、java
<p>如果您总是希望<code>__init__()</code>完全初始化对象,然后调用<code>load()</code>,那么我将把这两个函数提取到单独的方法中:</p>
<pre><code>class Super(object):
def __init__(self, *args, **kw):
self._initialise(*args, **kw)
self.load()
def _initialise(self, arg):
self.arg = arg
def load(self):
... as before ...
class Sub(Super):
def _initialise(self, arg2, *args, **kwargs):
super(Sub, self)._initialise(*args, **kwargs)
self.arg2 = arg2
def load(self):
super(Sub, self).load()
... as before ...
</code></pre>
<p>现在你有一个你没有重写的<code>__init__()</code>,你不再把初始化和加载这两个单独的操作混合在一起。在</p>