> 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