[Python-Dev] Pre-PEP: Attribute Access Handlers v2
Vladimir Marangozov
Vladimir.Marangozov@inrialpes.fr
Sat, 22 Jul 2000 19:56:03 +0200 (CEST)
[me]
>
> Paul Prescod wrote:
> >
> > I don't have a PEP number for this yet but I wanted to go through
> > another round of comments after changing the mechanism according to Don
> > Beaudry's suggestions.
> > ...
>
> Paul, this is clearly unclear <0.1 wink>.
Thanks (Paul, Don, Gordon) for clarifying this pre-PEP.
As I see it, this aims at providing builtin support for the following
(simplified & quickly hacked) __getattr__ version:
def new_getattr(self, name, rec=0):
hookname = "__get_%s__" % name
if not rec and hasattr(self, hookname):
hook = new_getattr(self, hookname, rec=1)
return hook(self)
# builtin __getattr__ follows ...
if self.__dict__.has_key(name):
return self.__dict__[name]
if self.__class__.__dict__.has_key(name):
return self.__class__.__dict__[name]
# ... return class_lookup(self, name)
raise AttributeError, name
class C:
def __get_hi__(self):
return "coucou"
def __getattr__(self, name):
return new_getattr(self, name)
>>> c = C()
>>> c.hi
"coucou"
and its setattr, delattr counterparts. But people are already massively
using __getattr__ as method dispatchers, so as I understand it, this is
not just about "Attribute Access Handlers". You're looking for a
"Normative Naming Scheme and Builtin Support for Attribute Access Handlers",
no more, no less.
Okay, so make this clear in the PEP. The presented scenarios don't make
this clear, IMO. I asked myself what's the enhancement here...
Also, it would be useful if you could include a Python implementation of
the concept, stating explicitely where the existing functionality ends,
and where the proposed enhancement starts, so that people can play with it.
--
Vladimir MARANGOZOV | Vladimir.Marangozov@inrialpes.fr
http://sirac.inrialpes.fr/~marangoz | tel:(+33-4)76615277 fax:76615252