Python - TypeError: 函数需要2个参数(给了3个) - 但我只给了2个!
我正在解析一个病人就诊记录的列表(csv文件)。为此,我创建了一些自定义的类:
class Patient:
def __init__(self,Rx,ID):
....
class PtController:
def __init__(self,openCSVFile):
self.dict=DictReader(openCSVFile)
self.currentPt = ''
....
def initNewPt(self,row):
Rx = row['Prescription']
PatientID = row['PatientID']
self.currentPt = Patient(Rx,PatientID)
...
我使用csv.DictReader来处理这个文件,这个功能是内置在PtController类里的。它会逐行读取文件,但在为第一个病人设置值时,执行了以下操作:
firstRow = self.dict.next()
self.initNewPt(self,firstRow)
...
出现的错误:
TypeError: initNewPt() takes exactly 2 arguments (3 given)
如果我在调用initNewPt之前打印(firstRow),它会按预期以字典的形式打印出这一行。
我使用的是python2.7,这是我第一次接触对象编程。你们有什么想法吗?
3 个回答
4
你需要在一个类的方法里调用 initNewPt
,但是不要加上 self
这个参数:
self.initNewPt(firstRow)
5
当你调用 self.initNewPt()
这个方法时,不需要把 self
作为参数传进去。因为 self
是一个隐含的参数,系统会自动帮你处理好。
11
你不需要像这样直接传递 self
:self.initNewPt(self,firstRow)
,因为在Python中,self
会自动被隐式传递。