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