R
Riccardo Galli
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
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