title: Python - TypeError: (function) takes exactly 2 arguments (3 given) - but I only gave 2!
body: <p>I'm parsing a list of patient visits (csv file). To deal with this, I have a custom set of classes:</p>
  
  <pre><code>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)
          ...
  </code></pre>
  
  <p>So, I'm using the csv.DictReader to process the file; built into the PtController class. It iterates through, but to set values for the first patient does the following:</p>
  
  <pre><code>firstRow = self.dict.next()
  self.initNewPt(self,firstRow)
      ...
  </code></pre>
  
  <p>The error:  </p>
  
  <pre><code>TypeError: initNewPt() takes exactly 2 arguments (3 given)
  </code></pre>
  
  <p>If I print(firstRow) before calling initNewPt, it prints the row in dictionary form as expected. </p>
  
  <p>Using python2.7, and this is my first time working with objects. Thoughts? </p>