Simplifying anonymous inner classes?
python.list at tim.thechases.com
Mon Nov 3 16:49:33 CET 2008
>> Is there a more Pythonic way to instantiate sub-classes and
>> provide instance-specific implementations without the
>> overhead of an unused "anonymous" class cluttering my
> I agree with Carl Banks that what you do is already fairly
> Pythonic: explicit is better than implicit, and simple is
> better than complex. What you do *is* simple, and easy to read
> - no magic involved. You wish it to be more concise - but I
> think that would make *less* pythonic, not more.
After playing with the various solutions (hurray for
version-control), I find myself back where I started, agreeing
with Carl & Martin for the most part. Everything else ended up
looking so baroque that it made matters worse. Even the extra
"del" statements for cleaning up the namespace were extra clutter
in the code, so I didn't bother tidying the namespace. I did
do_foo = _Foo(args)
do_bar = _Bar(args)
to having each backend contain a list of available actions, so I
self.actions = set([
(each Action knows how to hash itself for entry in a set) and
then descendants of Backend (such as DBBackend) simply add to
this set of actions in their own __init__ call.
The final product is what I'd call a "most understandable/least
convoluted" solution which, in the big picture, seems to be a
good part of "pythonicity". Until such time as Python offers
anonymous classes natively :)
Thanks to all who offered suggestions.
More information about the Python-list