擅长:python、mysql、java
<p>如果未提供参数,则可以使用<code>key word argument</code>在父类中设置<code>a</code>的值:</p>
<pre><code>class Parent(object):
def __init__(self, a=None):
if a is None:
self.a = 0
self.b = self.a + 1
class Child(Parent):
def __init__(self):
self.a = 1
super().__init__(self.a)
parent = Parent()
child = Child()
print(parent.a, parent.b)
print(child.a, child.b)
</code></pre>
<h3>输出:</h3>
<pre><code>0 1
1 2
</code></pre>
<p>另一种方法可以使用<strong>类变量</strong>:</p>
<pre><code>class Parent(object):
a = 0
def __init__(self):
self.a = self.__class__.a
self.b = self.a + 1
class Child(Parent):
a = 1
def __init__(self):
super().__init__()
parent = Parent()
child = Child()
print(parent.a, parent.b)
print(child.a, child.b)
</code></pre>
<h3>输出:</h3>
<pre><code>0 1
1 2
</code></pre>
<p>在上面的例子中,使用类变量,您可以完全不用子类中的<code>__init__</code>方法:(这可能适用于,也可能不适用于您的实际用例)</p>
<pre><code>class Parent(object):
a = 0
def __init__(self):
self.a = self.__class__.a
self.b = self.a + 1
class Child(Parent):
a = 1
</code></pre>