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




--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to