类是否可以继承\uyu init\uuu()函数?(Python)

2024-05-29 10:49:45 发布

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

创建类时,何时需要使用init()?在

对于下面的代码,当我们创建PartTimeEmployee()类时,我们是否可以从Employee()类继承init()?还是我们应该重打一遍?在

我发现两种密码都有效:

class Employee(object):

    def __init__(self, employee_name):
        self.employee_name = employee_name

    def calculate_wage(self, hours):
        self.hours = hours
        return hours * 20.00

class PartTimeEmployee(Employee):

    def calculate_wage(self,hours):
        self.hours = hours
        return hours * 12.00

以及

^{pr2}$

这里有什么最佳实践吗?在


Tags: 代码nameself密码returnobjectinitdef
1条回答
网友
1楼 · 发布于 2024-05-29 10:49:45

否;__init__与其他方法一样是继承的。因此,当你超越它时,你必须采取特别的预防措施。例如,如果我们有一个Person类:

class Person(object):
    def __init__(self, name):
        self.name = name

我们想要创建一个名为Employee的新类,它扩展它以添加一个title属性。我们可以在Person构造函数中重复该逻辑:

^{pr2}$

但是如果Person做了一些更复杂的事情,您可能不想这样做。相反,您需要使用super显式调用超类的__init__

class Employee(Person):
    def __init__(self, name, title):
        super(Employee, self).__init__(name)
        self.title = title

但是在子类没有额外初始化的简单情况下,可以忽略__init__;它确实会从超类中适当地继承。在

相关问题 更多 >

    热门问题