inheritance and how to use it
Bob Brusa
bob.brusa at gmail.com
Fri Feb 15 12:23:17 EST 2013
Am 15.02.2013 18:11, schrieb Dave Angel:
> On 02/15/2013 11:59 AM, Bob Brusa wrote:
>> Hi,
>> I use a module downloaded from the net. Now I want to build my own
>> class, based
>> on the class SerialInstrument offered in this module - and in my class
>> I would
>> like to initialize a few things, using e. g. the method clear()
>> offered by
>> SerialInstrument. Hence I type:
>>
>> class myClass(SerialInstrument)
>> self.clear(self)
>> def f1(self, str1, str2)
>> ...do something etc.
>>
>> I then get the message "self not know" from the statement
>> self.clear(self). I
>> have tried many other notations - none worked. What works is however the
>> following code - specifying myClass without the self.clear(self) in it:
>>
>> x = myClass("argument")
>> x.clear()
>>
>> How can I integrate this call into the definition of myClass? Thanks
>> for advice.
>> Bob
>>
>>
>>
>
> By initialize, I'll assume you want this code to execute when your class
> is instantiated. The way to do that is with a method called __init__().
> Notice the double underscore at begin and end.
>
> class myClass(SerialInstrument):
> def __init__(self):
> self.val1 = 42
> self.val2 = 31
> #... also initialize the base class
> self.clear()
>
> def f1(self, str1, str2):
> ....
>
> You should also call the __init__() method of the base class. But I
> don't know whether you're using Python2 or Python3, so I won't write
> that call
>
> This is without knowing anything about your base class, so there may be
> many other adjustments to be made.
>
>
>
>
I defined (which should clear visa-buffers when instantiating the class):
class myvisa(visa.SerialInstrument):
def __init__ (self):
self.clear()
def io (self, printstr, askstr):
...cut
when I run (python 2.7) a program using this class I get this:
C:\Projekte\TDSsw\mypython>python chk_clear_1.py
Traceback (most recent call last):
File "chk_clear_1.py", line 8, in <module>
from myvisa import *
File "C:\Projekte\TDSsw\mypython\myvisa.py", line 15, in <module>
class myvisa(visa.SerialInstrument):
File "C:\Projekte\TDSsw\mypython\myvisa.py", line 121, in myvisa
visa.Instrument.clear()
TypeError: unbound method clear() must be called with Instrument
instance as first argument (got nothing instead)
would it help to define instead:
class myvisa(visa.SerialInstrument):
def __init__ (self):
x = SerialInstrument(self)
x.clear() #and then forget about this x?
def io (self, printstr, askstr):
...cut
More information about the Python-list
mailing list