我一直在使用python进行在线课程。在一节课中似乎已经从a,b,c转到了z。
在最新课程中,在子类的init部分中,它似乎采用父类数组并将其传递给子类的新魔术方法init参数。
class ChildClass(ParentClass):
def __init__(self, speed, direction):
ParentClass.__init__(self, [speed, direction])
我在网上找不到任何资源来确认我的解释。
即使没有将任何内容分配给self.speed和self.direction,父级是否会传递其参数?
答案 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来自父类,父类中的任何东西都需要在子类中(如果它没有轮子就不再是汽车)会导致它崩溃。