On Wed, Sep 13, 2017 at 3:01 PM, Ivan Levkivskyi <levkivskyi@gmail.com> wrote:
@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.
That last sentence is a key observation. Do we even know whether there are (non-toy) things that you can do *in principle* with __class__ assignment but which are too slow *in practice* to bother? And if yes, is __getattr__ fast enough? @property? IMO we're still looking for applications. -- --Guido van Rossum (python.org/~guido)