dynamic

Riccardo Galli riccardo_cut1 at cut2_sideralis.net
Wed Jun 15 05:50:27 EDT 2005


Hi all.
It's easier if I show an example first.

Say I have

class A(object):
    def speak(self): print 'A!'

class B(object):
    def speak(self): print 'B!'

I also have a factory function like this.

def foo(kind,*args,**kwds):
   if kind=='a': return A(*args,**kwds)
   else: return B(*args,**kwds)

I need foo to be a class, so that I could inherit from it and still use
it as a factory, so that I can do:

Foo('a').speak()
Foo('b'.speak()

class Final(Foo):
   def __init__(self,kind,*args,**kwds):
       super(Foo,self).__init__(kind,*args,*kwds)

Can I do it? How ?
If it is possible, I'm pretty sure it involves using __new__ on Foo, but I
can't figure out how to make it works.

Any help is appreciated.

Thank you,
Riccardo

-- 
Riccardo Galli
Sideralis Programs
http://www.sideralis.net



More information about the Python-list mailing list