gpt4 book ai didi

python子类初始化器

转载 作者:行者123 更新时间:2023-11-28 19:41:02 25 4
gpt4 key购买 nike

在 python OOP 中,可以说,Person 是一个具有自己的初始化程序的父类;那么 Student 是 Person 的子类,在我使用 Student 之前,必须先在 Student 的初始化程序中调用 Person.__init__(self) 吗?另外,我可以在 Student 类中定义一个新的初始化程序吗?

class Person():      
def __init__(self):

上面是 Person 类及其初始化器

class Student(Person):    
def __init__(self):
Person.__init__(self)
def __init__(self, age)

我的意思是,Student 可以有自己的初始化程序吗?如果是这样,在这种情况下,是否必须在 Student 初始化程序中调用 Person.__init__(self)

最佳答案

当然,Student 可以有自己的初始化器。然而,一个类在 Python 中只能有一个初始化器,因为这是在构造函数中调用的一种特殊方法(类 __new__ 方法)。

所以当我们说子类有自己的初始化器时,我们的意思是这样的:

class Worker(People):
def __init__(self, company):
self.company = company

正如@IanH 所指出的,您不必调用父类(super class)初始化程序。当你认为你应该调用它时(可能是为了一些常见的初始化),你可以这样做:

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

class Student(People):
def __init__(self, name, school):
super(Student, self).__init__(name)
self.school = school

关于python子类初始化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3472853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com