擅长:python、mysql、java
<p>如果<code>Base</code>类需要值来完成它的工作,那么它应该是显式的。在</p>
<p>在其他编程语言中,可以使用抽象方法来设置需求,每个值对应一个方法,但这不是Python风格的,模拟它会很麻烦。在</p>
<p>两个示例之间最有趣的区别是第一个代码片段尝试使用基类的类变量,这将影响每个派生类及其所有实例。应该走哪条路?每个层次的值?每个派生类?每个实例?在</p>
<p>在最好的python风格中,如果对象可以设置自己的初始化值,那么<code>Base</code>类应该为它们使用合理的默认值,并为子类及其实例提供重写它们的机制。在</p>
<pre><code>class Base(object):
def __init__(self, attr1=DEFAULT1, attr2=DEFAULT2):
self.attr1 = attr1
self.attr2 = attr2
</code></pre>