python - "TypeError: read() takes exactly 1 argument (2 given)" when trying to use read() from subclass -
i'm writing class extends pyserial's serial.serial
class, , i'm having trouble using readline()
function.
i'm able reproduce problem little code this:
import serial class a(serial.serial): def read(self): return super(a, self).readline() = a() a.read()
when run code, traceback:
traceback (most recent call last): file "<stdin>", line 1, in <module> file "<stdin>", line 3, in read typeerror: read() takes 1 argument (2 given)
i know i'm missing here. expect pass 1 argument (self
). second argument come from?
also, tried using inspect.getcallargs(a.read)
figure out second argument, got traceback:
traceback (most recent call last): file "<stdin>", line 1, in <module> 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} not python function'.format(func)) typeerror: <built-in method readline of object @ 0xecf3d0> not python function
this makes sense, assuming pyserial's readline()
native c function or system call. correct in assuming why happens?
serial.read()
accepts optional argument, size
, default value 1. presumably serial.readline()
calls read()
method using argument. you've overridden read()
, haven't given version size
argument, error when readline()
calls version of read()
.
when fix error, you'll have problem recursion; suspect read()
method should not call readline()
.
Comments
Post a Comment