首页 > 解决方案 > 如何解决错误“object.__new__() 不带参数”?

问题描述

我在运行时遇到这种类型的错误

Traceback (most recent call last):   
  File "C:\Python37-32\python\program\overiding.py", line 17, in <module>
    e1=Employee("Rajesh",9000) 
TypeError: object.__new__() takes no parameters
class Employee:
    def _init_(self, nm=None, sal=None):
        self.name=nm
        self.salary=sal
    def getName(self):
        return self.name
    def getSalary(self):
        return self.salary

class SalesOfficer(Employee):
    def _init_(self,nm=None,sal=None,inc=None):
        super()._init_(nm,sal)
        self.incnt=inc
        def getSalary(self):
            return self.salary+self.incnt

标签: python

解决方案


构造函数被命名__init__(在init周围有两个下划线)而不是_init_(只有一个下划线),只需更改它,您的代码就可以工作

class Employee:

    #Fixed this
    def __init__(self, nm=None, sal=None):
            self.name=nm
            self.salary=sal

    def getName(self):
        return self.name

    def getSalary(self):
        return self.salary

class SalesOfficer(Employee):

    # Fixed this
    def __init__(self,nm=None,sal=None,inc=None):
        super()._init_(nm,sal)
        self.incnt=inc

    def getSalary(self):
        return self.salary+self.incnt


e1=Employee("Rajesh",9000)
print(e1.getName())
print(e1.getSalary())

输出将是

Rajesh
9000

需要注意的一点是,当我尝试运行 OP 的原始代码时,我得到 TypeError: Employee() takes no arguments的不是object.__new__() takes no parametersOP 得到的,但在我看来,这两个错误都指向同一个方向,它说因为没有__init__定义,你不能设置任何构造函数中的属性!


推荐阅读