Redefining __call__ in an instance
Robert Brewer
fumanchu at amor.org
Thu Jan 15 19:16:20 EST 2004
Robert Ferrell wrote:
> I'd like to have a factory class that takes a string argument
> and returns
> the appropriate factory method based on that string. I'd like the
> instances to be callable. Like this:
>
> fact = Factory('SomeThing')
> aSomeThing = fact(some args)
>
> anotherFact = Factory('SomeThingElse')
> anotherThing = anotherFact(some other args)
Perhaps this will give you some ideas:
>>> class SomeThing(object):
... pass
...
>>> def Factory(classname, *args, **kwargs):
... return globals()[classname](*args, **kwargs)
...
>>> st = Factory('SomeThing')
>>> st
<__main__.SomeThing object at 0x010C0F10>
If you still want to package that into a class instead of a function
(and then override __call__), feel free. Obviously, more exception
checking could be done.
Robert Brewer
MIS
Amor Ministries
fumanchu at amor.org
More information about the Python-list
mailing list