我在运行时遇到此类错误
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
答案 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__
,因此您无法在构造函数中设置任何属性!