Re: inheritance and how to use it

Discussion in 'Python' started by Bob Brusa, Feb 15, 2013.

  1. Bob Brusa

    Bob Brusa Guest

    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
    Bob Brusa, Feb 15, 2013
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. maxw_cc
    Replies:
    1
    Views:
    3,121
    Martijn van Steenbergen
    Dec 21, 2003
  2. cppsks
    Replies:
    0
    Views:
    806
    cppsks
    Oct 27, 2004
  3. karthikbalaguru
    Replies:
    9
    Views:
    1,026
  4. Lacrima
    Replies:
    43
    Views:
    792
    Mark Lawrence
    Aug 2, 2010
  5. Rouslan Korneychuk
    Replies:
    8
    Views:
    589
    Rouslan Korneychuk
    Feb 10, 2011
Loading...

Share This Page