[Python-ideas] Mitigating 'self.' Method Pollution

Ryan Gonzalez rymg19 at gmail.com
Sat Jul 11 04:42:03 CEST 2015


-1e200.

I have to deal with implicit 'this' enough in C++ at the risk of writing "bad style" or something like that. It has bitten before. Until I started following C++ style guides, I always put 'this->' in front of every variable but still had to deal with the accidental member reference when you meant something else.

I also like the fact that Python lets you name constructor arguments the same way as members, e.g.:

class X:
 def __init__(self, x, y):
  self.x = x
  self.y = y

You can do the same in C++, but compilers with -Wall will complain unless you do this:

class X {
public:
 X(int x_, int y_): x{x_}, y{y_} {}
 ...
}

which is just ugly.


On July 10, 2015 5:31:28 PM CDT, Michael Hewitt <michael at hewitts.us> wrote:
>Last night I made a post to the neopythonic blog proposing a Python 3.x
>feature that Guido asked me to forward to this alias.  For the full
>background, see the link to my post below.  For brevity, I will simply
>submit the proposal here.  The specific problem I am addressing is the
>pollution of Python methods by 'self.' to reference fields.  Here is
>the
>proposal:
>
>The name of the first parameter to a method can be used to scope
>subsequent
>variable references similar to the behavior of 'global'.
>
>
>Here are some examples:
>
>class Foo:
>
>def method_a(self)
>
>self x # subsequent 'x' references are scoped to 'self'
>
>x = 5 # same as self.x = 5
>
>def method_b(this)
>
>this x, y # subsequent 'x' & 'y' refs are scoped to 'this'
>
>x = y # same as this.x = this.y
>
>def method_c(its)
>
>its.x = 5 # still works just like it used to
>
>
>This suggestion is fully backward compatible with existing Python code,
>but
>would eliminate the need to pollute future Python methods with copious
>'self.' prefixes, thereby improving both readability and
>maintainabilty.
>
>Thank you for your consideration.
>
>Michael Hewitt
>
>Original Post:
>http://neopythonic.blogspot.com/2008/10/why-explicit-self-has-to-stay.html
>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Python-ideas mailing list
>Python-ideas at python.org
>https://mail.python.org/mailman/listinfo/python-ideas
>Code of Conduct: http://python.org/psf/codeofconduct/

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20150710/47a105c8/attachment.html>


More information about the Python-ideas mailing list