Oops! Forgot to remove fromfile from baseClass. Wouldn't matter though. John Henry wrote: > > Here I tried this example and maybe this will explain the difficulties > > I'm having. > > 1) at the time the baseClass is constructed shouldn't the constructor > > of the appropriate > > type be called. > > Not automatically. > > > 2) getName is doing nothing... > > > > class baseClass: > > def __init__(self): > > pass > > def fromfile(self, str): > > if (str == 'A'): > > a = typeA() > > else: > > a = typeB() > > def getName(self): > > pass > > > > class typeA(baseClass): > > def __init__(self): > > self.name='A' > > print 'typeA init' > > def fromfile(self, str=None): > > print 'typeA fromfile' > > def getName(self): > > print self.name > > > > class typeB(baseClass): > > def __init__(self): > > self.name='B' > > print 'typeB init' > > def fromfile(self, str=None): > > print 'typeB fromfile' > > def getName(self): > > print self.name > > > > bc = baseClass() > > bc.fromfile('A') > > bc.getName() > > bc.fromfile('B') > > bc.getName() > > bc.getName() > > > > log: > > typeA init > > typeB init > > > > > > > > > -- > > > Steven D'Aprano > > Maybe this would help: > > class baseClass: > def __init__(self, name): > self.name=name > print 'type'+self.name+' init' > def fromfile(self, str): > if (str == 'A'): > a = typeA() > else: > a = typeB() > def getName(self): > print self.name > > class typeA(baseClass): > def __init__(self): > baseClass.__init__(self, "A") > def fromfile(self, str=None): > print 'type'+self.name+' fromfile' > > class typeB(baseClass): > def __init__(self): > baseClass.__init__(self, "B") > def fromfile(self, str=None): > print 'type'+self.name+' fromfile' > > bcA = typeA() > bcA.fromfile() > bcA.getName() > > bcB = typeB() > bcB.fromfile() > bc.getName() > > I think you're looking at objects in an inverted way. > > typeA is a kind of baseClass, and so is typeB. > > not: > > baseClass consists of 2 subclasses A and B.
-- http://mail.python.org/mailman/listinfo/python-list