Python - TypeError :(函数)只需要2个参数(给定3个) - 但我只给了2个!

chr*_*ris 3 python

我正在解析病人访问列表(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)
        ...
Run Code Online (Sandbox Code Playgroud)

所以,我正在使用csv.DictReader来处理文件; 内置于PtController类中.它会迭代,但要为第一位患者设置值,请执行以下操作:

firstRow = self.dict.next()
self.initNewPt(self,firstRow)
    ...
Run Code Online (Sandbox Code Playgroud)

错误:

TypeError: initNewPt() takes exactly 2 arguments (3 given)
Run Code Online (Sandbox Code Playgroud)

如果我在调用initNewPt之前打印(firstRow),它会按照预期以字典形式打印行.

使用python2.7,这是我第一次使用对象.思考?

mul*_*ces 11

您不需要self直接传递self.initNewPt(self,firstRow),因为它会由Python自动传递.


g.d*_*d.c 5

当你打电话时,self.initNewPt()你不应该self作为参数传递.这是一个自动出现的隐含参数.