title: "TypeError: read() takes exactly 1 argument (2 given)" when trying to use read() from subclass
body: <p>I'm writing a class which extends pySerial's <code>serial.Serial</code> class, and I'm having trouble using the <code>readline()</code> function.</p>
  
  <p>I'm able to reproduce the problem with as little code as this:</p>
  
  <pre><code>import serial
  class A(serial.Serial):
      def read(self):
          return super(A, self).readline()
  
  a = A()
  a.read()
  </code></pre>
  
  <p>When I run this code, I get a traceback: </p>
  
  <pre><code>Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
    File "&lt;stdin&gt;", line 3, in read
  TypeError: read() takes exactly 1 argument (2 given)
  </code></pre>
  
  <p>I know I'm missing something here. I would expect it to pass just one argument (<code>self</code>). Where does the second argument come from?</p>
  
  <p>Also, I tried using <code>inspect.getcallargs(a.read)</code> to figure out that second argument, but I then got this traceback:</p>
  
  <pre><code>Traceback (most recent call last):
    File "&lt;stdin&gt;", line 1, in &lt;module&gt;
    File "/usr/lib/python2.7/inspect.py", line 900, in getcallargs
      args, varargs, varkw, defaults = getargspec(func)
    File "/usr/lib/python2.7/inspect.py", line 815, in getargspec
      raise TypeError('{!r} is not a Python function'.format(func))
  TypeError: &lt;built-in method readline of A object at 0xecf3d0&gt; is not a Python function
  </code></pre>
  
  <p>This makes some sense, assuming PySerial's <code>readline()</code> is a native C function or system call. Am I correct in assuming this is why this happens?</p>