[Python-ideas] PEP: Shorthand Symbol for "self"
tom at vector-seven.com
Mon Aug 25 15:13:11 CEST 2008
I really don't think any of the proposed solutions are logically,
functionally or aesthetically better than what we currently have with
I find all proposed variants of "$.foo" to be jarring. "def self.bar()"
is somewhat less ugly, but misleading since the method is actually being
bound to its outer class, not "self" (presumably, any instances of that
class rather than the class itself):
>>> class Foo(object):
... def bar(self):
... print "Hello, 0x%x" % id(self)
>>> foo = Foo()
Note that the declaration of "bar" binds the function to class "Foo",
not to the instance "foo". Would these semantics change with the
Either way it's a -1 from me until a more Pythonic proposal surfaces.
I'm not sure there's a way to improve on the simplicity of the existing
Russ Paielli wrote:
> On Mon, Aug 25, 2008 at 12:45 AM, Bruce Leban <bruce at leapyear.org
> <mailto:bruce at leapyear.org>> wrote:
> Jim Jewett wrote:
> If I could write:
> class foo:
> def self.bar():
> then the call to object.bar() would match the declaration.
> Back to Russ's proposal: it would be better accomodated IMHO by
> allowing $ as a character in a variable name, just like _ is.
> Then, conventionally, people could use $ as self:
> def $.bar():
> and for whatever it's worth, I find $.bar easier to read then $bar
> as the explicit dot reminds me it's doing an attribute get rather
> than looking like a special variable name.
> def $.bar():
> That's two separate proposals, but I think I like both of them.
> Of course, Python already allows "S", which is very similar to "$", as
> the first argument, so we're almost there on that aspect of it. Come
> to think of it, I may start using "S" and see how it works out.
> So how about
> def S.bar():
> Python-ideas mailing list
> Python-ideas at python.org
More information about the Python-ideas