Python构造函数链接和多态

Mir*_*lha 3 python oop

我正在尝试学习Python的OOP标准,我编写了一个非常简单的代码

class Human(object):
    def __init__(self):
        print("Hi this is Human Constructor")

    def whoAmI(self):
        print("I am Human")


class Man(Human):
    def __init__(self):
        print("Hi this is Man Constructor")

    def whoAmI(self):
        print("I am Man")


class Woman(Human):
    def __init__(self):
        print("Hi this is Woman Constructor")

    def whoAmI(self):
        print("I am Woman")
Run Code Online (Sandbox Code Playgroud)

看起来很简单呃?男人和女人的经典继承模块,我无法理解的是,当我为女人或男人创建一个对象时,为什么不发生构造函数链接,以及如何在Python中实现多态性.

这似乎是一个真正含糊不清的问题,但我无法用任何其他方式.任何帮助将不胜感激

Ana*_*mar 5

你有一__init__()Man,以及Woman,使覆盖__init__()从父类Human.如果您希望__init__()for子类调用父类__init__(),则需要使用它来调用它super().示例 -

class Man(Human):
    def __init__(self):
        super(Man, self).__init__()
        print("Hi this is Man Constructor")

class Woman(Human):
    def __init__(self):
        super(Woman, self).__init__()
        print("Hi this is Woman Constructor")
Run Code Online (Sandbox Code Playgroud)

对于Python 3.x,您只需__init__()使用 - 来调用父项super().__init__().