Am 15.02.2013 19:06, schrieb Dave Angel:
On 02/15/2013 12:50 PM, Bob Brusa wrote:
Am 15.02.2013 18:06, schrieb Thomas Rachel:
Am 15.02.2013 17:59 schrieb Bob Brusa:
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).

Which is absolutely correct. Besides, I would have expected some syntax
errors.

You try to execute the clear() method during the definition of the
class, not during the instantiation.

Instantiation happens in the __init__() method.

You'll have to do it like this:

class myClass(SerialInstrument):
     def __init__(self, *a, **k): # accept all parameters
         super(myClass, self).__init__(*a, **k)
         self.clear() # I don't think that self is to be given twice
here...
     def f1(self, str1, str2):
         pass

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()

Here the clear() is called on the object which has been created, so
after calling the __init__() above (which is, roughly, equivalent to
calling it at the bottom of __init__()).


Thomas

Thomas,
This does not work either. The error comes while python analyses the
code - even prior to executing my program.... But what I want to achieve
is that this clear() is executed when the class is instantiated....which
I do with the code

x = myClass("COM7")

Of course, when scanning the class definition, the argument "COM7" is
not yet known.
Thanks for further help. Bob


Your error is on line 115, so what does it look like, and its context? I
expect you're never getting to the line x = myClass().

Hi Dave and Thomas,
yep - now its working: See also attachment q4.py

C:\Projekte\TDSsw\mypython>python q4.py
start of program q4.py
->*idn? | "SPEAG","TDS","RUID:00.00-00.00 FW:2.0000 SID:00.00-00.00 FW:01.00.00"
end of program

Thanks for your kind help - bob
"""/
edit history:
15-02-2013  Creation
"""

import sys
import visa
import time


class myvisa(visa.SerialInstrument):
    """provide utilities to handle the instrument
    """
    def __init__(self, addr): # accept all parameters
        super(myvisa, self).__init__(addr, baud_rate = 57600)
        self.clear() # Thomas does not think that self is to be given twice
        # he is right!

    def io (self, printstr, askstr):
        """combines a print and an ask-string into a single call
        """
        res = 0
        try:
            antw = self.ask(askstr)
        except:
            antw = "time-out"
            res = 1
        print printstr + antw
        return res

strich = " | "; pfeil = "->"
print "start of program q4.py"
iodev = "COM7"
tds = myvisa(iodev)
cmd = "*idn?"; tds.io(pfeil+cmd+strich,cmd)
cmd = "status?"; tds.write(cmd)     # exit with something in the visa-buffer 
and this will
                                    # lead to a de-chronization between write 
and reads when 
                                    # executing a next program
print "end of program"

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

Reply via email to