inheritance and how to use it

Thomas Rachel nutznetz-0c1b6768-bfa9-48d5-a470-7603bd3aa915 at spamschutz.glglgl.de
Fri Feb 15 12:06:00 EST 2013


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



More information about the Python-list mailing list