NEWBIE: Sub-classes revisited

E

engsolnom

Thanks for the patient help. My preconcieved notions
about sub-classes were wrong. After re-reading the
tutorial, and the responses to my postings, I think
I've learned a bit. (Hope so, anyway)

In the case of:

# IN MOD_1.PY

class B:
def __init__ (self):
self.B_init_var = 1
def B_meth(self):
self.B_meth_var = 2

# IN MOD_2.PY

import mod_1

class A(mod_1.B): # B needs to be qualified
def __init__(self):
mod_1.B.__init__(self) # Needs to be qualified
self.B_meth() # But B's method doesn't
print self.B_init_var # Just to be sure
print self.B_meth_var # Ditto

obj = A()

Is the following true?

1. When A is instantiated, B's name space is exposed
to A.
2. B is not instantiated when A is,
therefore B's init is not run.
3. If A can't find B_meth in it's own namespace,
it looks in B's namespace.
4. If one attempts to run B's init in A's init,
using self.__init__(), one is in for a long wait...:)
5. B's init in A's init must be qualified to prevent #4
6. The proper terminology is:
'A inherits B's methods and attributes'

7. An init in B is of limited usefulness.
8. If all one needs is to 'declare and inialize'
variables common to a number of classes, one
really doesn't need a base class,
just a module containing the 'constants'.
But if there are methods which are semi-common
to all sub-classes, and can be overidden or
extended to do the job, then it makes sense to
use inheritance.
9. Inheriting variables (only), then (always)
over riding their values in the sub-classes
doesn't save memory.

All comments welcome.
Thanks....Norm
 

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

Forum statistics

Threads
473,774
Messages
2,569,598
Members
45,152
Latest member
LorettaGur
Top