python - 如何解决错误“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
解决方案
构造函数被命名__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 parameters
OP 得到的,但在我看来,这两个错误都指向同一个方向,它说因为没有__init__
定义,你不能设置任何构造函数中的属性!
推荐阅读
- google-sheets - 从多个谷歌工作表导入范围,当任何一张工作表没有要导入的数据时发出
- python - 如何在 matplotlib 中添加 R 平方(R^2)?
- constraints - cplex 中的幂非线性约束
- r - 如何将 N、对数似然、AIC 和 BIC 值分配给合并的“gtsummary”表输出中的每个多元回归模型?
- c++ - 不能包含
- python - 如何解决字典的可调用错误?
- flutter - 提供程序未更新导航屏幕中的值
- c - C calloc 和自由结构
- node.js - 如何在 shell 脚本中串行执行命令?
- php - 带有 SSL 的 WebSocket 没有 httpd.conf 访问