On 4/18/06, Guido van Rossum <[EMAIL PROTECTED]> wrote:
> On 4/18/06, Jim Jewett <[EMAIL PROTECTED]> wrote:
> > On 4/14/06, Guido van Rossum <[EMAIL PROTECTED]> wrote:
> > > Then, on 4/14/06, Nick Coghlan <[EMAIL PROTECTED]> wrote:
> > > [...]
> > > class C:
> > >   x = property(._get_x, ._set_x, ._del_x,
> > >                "This is the x property")
> > > [...]
> >
> > > This is slightly more Pythonic, and unambiguous, but I'd rather
> > > reserve leading dot for a more powerful feature, perhaps .foo as an
> > > abbreviation for self.foo, or some other scope-ish operator. (I also
> > > note that in a proportional font the . is easily missed.)

> > Does that conflict?  Wouldn't self._get_x fall through to
> > self.__class__._get_x, which is exactly what you want?  (Except that
> > you *might* the ability to override methods on a per-instance basis.)

> Not in this context. When the expression "property(._get_x, ._set_x,
> ...)" is evaluated, there is no self yet (unless it is an unrelated
> outer self).

Ah ... you were thinking of ._get_x as an expression which would be
evaluated at compile-time to produce an actual method.

I was still thinking of symbols, and reading ".name" as syntactic
sugar for "self.name", with the caveat that the translation was made
at runtime rather that compile-time.

Therefore

    property(._get_x, ._set_x)

would be syntactic sugar for

    def __getx(self):  return self._get_x()
    def __setx(self):  return self._set_x()
    property(__getx, __setx)

except that the __getx and __setx methods wouldn't be added to the
visible namespace, even in mangled form.

-jJ
_______________________________________________
Python-3000 mailing list
Python-3000@python.org
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to