<p>在<code>Bonny = Dog</code>处缺少一些括号</p>
<pre><code>class Animal:
def talk(self, something):
print(something)
class Dog(Animal):
def talk(self):
super().talk("woof woof")
Bonny = Dog()
Bonny.talk()
</code></pre>
<h2>编辑</h2>
<p>由于这是我目前投票最多的答案,仍然有一些活动,而且显然缺乏一些解释,我想补充一些</p>
<pre><code>Bonny = Dog
</code></pre>
<p>意思是,<code>Bonny</code>是对<code>Dog</code>类的引用。它是可调用的,并且将调用<code>Dog</code>的实例<code>Bonny</code>将不是一个类型</p>
<pre><code>Bonny = Dog()
</code></pre>
<p>如果您想像上面那样调用对象,应该添加括号。这意味着您调用对象并引用它<code>Bonny</code>将作为参考</p>
<p>对对象的引用也应该是小写的</p>
<pre><code>bonny = Dog()
</code></pre>
<p>第二件事。由于您的对象表明它们可能包含对应于相同类型的每个对象(2个或多个Dog对象)的数据,因此需要一个<code>constructor</code></p>
<pre><code>class Dog(Animal):
def __init__(self, name):
super(Dog, self).__init__(self)
self.name = name
def talk(self):
super().talk("woof woof my name is {}".format(self.name))
def __str__(self):
return self.name
</code></pre>
<p>这样你可以给你的狗命名,让它说出自己的名字,然后在<code>print(bonny)</code>上,也可以用<code>__str__</code>方法打印它的名字。但是您还需要使用OP使用的<code>super</code>函数调用super的(在本例中是<code>Animal</code>对象)init函数</p>
<p>类继承在Python中不是最简单的事情,因为它不是一种强OO语言。但是课程太棒了</p>