如何解决错误“ object .__ new __()不带参数”?

时间:2019-05-03 02:39:06

标签: python

我在运行时遇到此类错误

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

1 个答案:

答案 0 :(得分:0)

构造函数的名称为__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而不是OP得到的object.__new__() takes no parameters,但是我认为,这两个错误都指向同一方向,即它表示由于未定义__init__,因此您无法在构造函数中设置任何属性!