无法理解python继承参数

Shi*_*ena -1 python inheritance class object

我已经尝试过阅读一些不同的教程,但我仍然无法弄明白.我有两个简单的课程.动物和猫.

class Animal:
    def __init__(self, name):
        self.name = name

class Cat(Animal):
    def __init___(self, age):
        self.age = age
        print('age is: {0}'.format(self.age))

    def talk(self):
        print('Meowwww!')



c = Cat('Molly')
c.talk()
Run Code Online (Sandbox Code Playgroud)

输出是:

Meowwww!
Run Code Online (Sandbox Code Playgroud)

代码运行,但我有点困惑.我创建了一个cat类的实例c = Cat('Molly').因此,不知何故,通过使用"Molly"作为Cat()类实例的参数,它将提供"Molly"给原始基类(Animal)而不是Cat我创建的类实例?为什么?那么如何为Cat类实例提供age它需要的变量呢?

我试过做:

c = Cat('Molly', 10)
Run Code Online (Sandbox Code Playgroud)

但它抱怨太多的争论.其次,为什么不会__init__调用Cat类的功能?它应该打印"年龄是......".它永远不会.

编辑:得到它的工作,感谢Martijn Pieters!这是更新的代码(适用于python3):

class Animal():
    def __init__(self, name):
        self.name = name
        print('name is: {0}'.format(self.name))


class Cat(Animal):
    def __init__(self, name, age):
        super().__init__(name)
        self.age = age
        print('age is: {0}'.format(self.age))

    def talk(self):
        print('Meowwww!')


c = Cat('Molly', 5)
c.talk()
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 6

你错了拼写__init__:

def __init___(self, age):
#   12    345
Run Code Online (Sandbox Code Playgroud)

这是最后的3个双下划线,而不是所需的2个.

因此,Python不会调用它,因为它不是它正在寻找的方法.

如果要传入年龄和名称,请为方法指定另一个参数,然后__init__使用名称调用父级:

class Cat(Animal):
    def __init__(self, name, age):
        super().__init__(name)
        self.age = age
Run Code Online (Sandbox Code Playgroud)