@Guido
> One would have to introduce some kind of convention
> where you can write properties with a leading _
One doesn't even need the @property decorator in this case.
For example:
def __getattr__(name):
g = globals()
name = '_' + name
if name in g:
return g[name]()
raise AttributeError(...)
def _attr():
"do something"
return actual_object
One can even write a decorator that would change the name automatically
(but this will require a call at the end of module to unbind original names).
The space for play is infinite. The question is what exactly is needed.
I would say that already basic customisation (like __getattr__) will be enough.
IIUC, this will be actually a bit faster than setting __class__ since only "customized"
attributes will be affected.
--
Ivan