inheritance?

Inyeol Lee inyeol.lee at siliconimage.com
Wed Aug 16 15:06:28 EDT 2006


On Wed, Aug 16, 2006 at 11:07:08AM -0700, KraftDiner 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.
> 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
>


I didn't follow up this thread from the begining, but I think this is
what you want;

Python 2.4.3 (#1, Mar 31 2006, 09:09:53) 
[GCC 2.95.3 20010315 (release)] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
>>> class baseClass:
...     @staticmethod
...     def fromfile(string):
...             if string == "A":
...                     return typeA()
...             else:
...                     return typeB()
...     def getName(self):
...             print self.name
... 
>>> class typeA(baseClass):
...     def __init__(self):
...             self.name = "A"
...             print "typeA init"
... 
>>> class typeB(baseClass):
...     def __init__(self):
...             self.name = "B"
...             print "typeB init"
... 
>>> a = baseClass.fromfile("A")
typeA init
>>> a.getName()
A
>>> b = baseClass.fromfile("B")
typeB init
>>> b.getName()
>>> B
>>>

--
Inyeol Lee



More information about the Python-list mailing list