使用子类和sup时_uinit_uuu的参数

2024-09-27 21:27:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我花了一个愉快的星期六来深入研究Python对象,并提出了一个简单的问题,这个问题不是令人兴奋,而是有点好奇

假设我有一个基类和一个子类as follows

class Person:

    def __init__(self, first, last):
        self.firstname = first
        self.lastname = last

    def __str__(self):
        return self.firstname + " " + self.lastname

class Employee(Person):

    def __init__(self, first, last, staffnum):
        super().__init__(first, last)
        self.staffnumber = staffnum


x = Person("Marge", "Simpson")
y = Employee("Homer", "Simpson", "1007")

我在看员工类

给定:
我们使用的是super(),其中包含参数,
为什么在python中__init__仍然要求我们键入first, last
这难道不应该从我们使用super推断出来吗?似乎是额外的重复打字。作者这样做的理由是什么


Tags: 对象selfinitdefemployeefirstnameclassperson
1条回答
网友
1楼 · 发布于 2024-09-27 21:27:53

原因是您可以进一步自定义子类。在您的示例中,当您仍要输入firstlast时,会比较麻烦,因为您必须键入两次,如下所示:

class Employee(Person):
    def __init__(self, first, last):
        super().__init__(first, last)

emp1 = Employee("Bob", "Jones")

但是,您可能希望自动填充其中一些值。在本例中,可能是一个FamilyMember类,其中姓氏是公共的

class FamilyMember(Person):
    def __init__(self, first):
        super().__init__(first, last="Erikson")

fm1 = FamilyMember("Paul")

在这种情况下,您只需要为FamilyMember输入first变量,last变量将自动填充

相关问题 更多 >

    热门问题