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