inheritance and how to use it

B

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

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
 
B

Bob Brusa

Am 15.02.2013 18:06, schrieb Thomas Rachel:
Am 15.02.2013 17:59 schrieb Bob Brusa:

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

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
 
D

Dave Angel

Am 15.02.2013 18:06, schrieb Thomas Rachel:

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

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top