inheritance and how to use it

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

  1. Bob Brusa

    Bob Brusa Guest

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

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

  3. Bob Brusa

    Bob Brusa Guest

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

    Dave Angel Guest

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

    --
    DaveA
    Dave Angel, Feb 15, 2013
    #4
    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,108
    Martijn van Steenbergen
    Dec 21, 2003
  2. cppsks
    Replies:
    0
    Views:
    797
    cppsks
    Oct 27, 2004
  3. karthikbalaguru
    Replies:
    9
    Views:
    1,019
  4. Lacrima
    Replies:
    43
    Views:
    779
    Mark Lawrence
    Aug 2, 2010
  5. Rouslan Korneychuk
    Replies:
    8
    Views:
    568
    Rouslan Korneychuk
    Feb 10, 2011
Loading...

Share This Page