[Python-ideas] PEP: Shorthand Symbol for "self"
cvrebert at gmail.com
Mon Aug 25 05:45:51 CEST 2008
On Sun, Aug 24, 2008 at 8:22 PM, Terry Reedy <tjreedy at udel.edu> wrote:
> Russ Paielli wrote:
>> instance for which it is called. What I will say is that I think Python
>> syntax could be significantly simplified with the simple little convention
>> that I am proposing. All I ask is that you carefully read my proposal before
>> you reply. Thank you.
> I have. It strikes me as an improvement over .attr and other ideas posted
> on c.l.p.
> In Python, the class instance for which a method is called is
> referred to within the method by the first formal argument.
> Somehow awkward.
> By convention, that first argument is typically named "self".
> For public code among English speakers. But how far this extends and for
> how long, given Unicode identifiers in 3.0, is a moot point for your
> In Python, class instance methods are functions in which the first
> formal argument refers to the instance for which the method was
> In Python, class instance methods are functions accessed as an attribute of
> the class, in particular of the object passed as the first argument. To me
> your discussion is weakened by the implication that Python has a method
> class separate from functions. (Bound methods are specialized
> partial-function wrappers; functools.partial is the general version.) For
> could even work for regular functions if the first argument is an
> object with attributes and/or methods that can be accessed with
> standard "dot" notation.
> Def statements produce functions. Period.
> This proposal takes no position of
> whether the latter should be allowed or not.
> To repeat: former *is* latter with a particular access path. So the
> question is not whether to 'allow' $ to work in functions; that *is* your
> proposal, whether you know it or not. To do otherwise would require some
> other significant change to Python, one that would complicate it.
> Four possible candidates for the choice of that symbol are "~",
> "@", "^", and "$".
> You left out "?" (not too good ;-) and now, in 3.0, "`" (backtick, no longer
> an repr synonym). The latter is lighter than "$" but perhaps more visible
> than ".", depending on the font. Hmmm, a comparison:
Minor point, but the backtick is NOT up for grabs, at least as of a
discussion on this very list from last year.
Quoting a response from Guido:
On 1/2/07, Chris Rebert <cvrebert at gmail.com> wrote:
> Thus, I propose one of the following as the new use for the backtick (`):
You're missing one of the main reasons for removing the backtick
syntax in the first place: the character itself causes trouble by
looking too much like a regular quote (depending on your font), is
routinely mangled by typesetting software (as every Python book author
can testify), and requires a four-finger chord on Swiss keyboards. No
new uses for it will be accepted in Python 3000 no matter how good the
--Guido van Rossum (home page: http://www.python.org/~guido/)
Not that I understand the relevance of Swiss keyboards, but anyway,
there you have it.
Perhaps we need to alias __future__.backtick to __future__.braces so
people remember this ;)
Follow the path of the Iguana...
> self.d = sqrt(self.x*self.x + self.y*self.y)
> s.d = sqrt(s.x*s.x + s.x*s.x)
> .d = sqrt(.x*.x + .y*.y)
> $d = sqrt($x*$x + $y*$y)
> `d = sqrt(`s*`x + `y*`y)
> I think I like this last best.
> Terry Jan Reedy
> Python-ideas mailing list
> Python-ideas at python.org
More information about the Python-ideas