
Neil Toronto wrote:
Inner-class-as-a-class-variable is the mental leap you have to make, plus you have to be comfortable with metaclasses.
Actually, I think there's a further mental leap you have to make -- the notion that a 'class' statement can create something that is *not* a class. Just knowing that there is a metaclass involved is not enough to alert you to this possibility.
IMO this is something that should definitely not be encouraged, as it directly obfuscates the code -- you're saying 'class' when you don't really mean it.
It might be nice to be able to declare a one-off namespace:
Yes, things like this have been suggested before. There was a thread not long ago about a 'make' statement, for example, and there have been numerous suggestions for a 'namespace' statement.
My favourite version would be something like
intance foo(property):
def __get__(self): ...
def __set__(self, x): ...
which would be roughly equivalent to
class _foo(property): ...
foo = _foo()
but without the intermediate class name.
-- Greg