使用python中父类的magic方法__init__初始化子类

时间:2017-04-19 13:36:26

标签: python python-3.x magic-methods

我一直在使用python进行在线课程。在一节课中似乎已经从a,b,c转到了z。

在最新课程中,在子类的init部分中,它似乎采用父类数组并将其传递给子类的新魔术方法init参数。

class ChildClass(ParentClass):
    def __init__(self, speed, direction):
        ParentClass.__init__(self, [speed, direction])

我在网上找不到任何资源来确认我的解释。

即使没有将任何内容分配给self.speed和self.direction,父级是否会传递其参数?

2 个答案:

答案 0 :(得分:1)

子类__init__的{​​{1}}方法将其参数传递给其父类ChildClass的{​​{1}}方法,以及父__init__方法然后继续对象初始化。假设ParentClass仅包含显示的代码,子方法的唯一要点是使子构造函数的签名与父构造函数不同;如果__init__被删除,则只需将ChildClass.__init__的所有来电更改为ChildClass.__init__即可继续执行同样的操作。

答案 1 :(得分:1)

父类就像创建一个有4个轮子的汽车类。

car:
    def__init__(self, wheels):
        self.wheels = 4    

你可以在self中定义 init 函数或下面的轮数,但是在init中你需要在wheel = x之前的任何内容。

def__init__(self, wheels = 4, color):   # this would fail
def__init__(self, color, wheels = 4): # this would work

现在我们创造了一个雪佛兰(导致愚蠢)

chevy(car):
    def__init__(self, wheels, color = blue):
        self.color = color

    super().__init__(wheels) 

super来自父类,父类中的任何东西都需要在子类中(如果它没有轮子就不再是汽车)会导致它崩溃。