[Python-Dev] Draft proposal: Implicit self in Python 3.0

Fabien Schwob skink at evhr.net
Fri Jan 6 13:10:41 CET 2006


 > Example 1 (Python 2.x):
 > -----------------------
 >
 >     class Foo:
 >         def __init__(self, x):   # 1: Explicit 'self' argument
 >             self.x = x           # 2: 'self' must be used explicitly
 >         def bar(self, a, b):     # 3: There are three arguments...
 >             print self.x + a + b
 >
 >     Foo(10).bar(20, 30)          # ...but only two explicit parameters
 >                                  #    is presented
 >
 > This document proposes to change this, as the next example shows:
 >
 > Example 2 (Python 3.0):
 > -----------------------
 >
 >     class Foo:
 >         def __init__(x):         # 1: Implicit self
 >             .x = x               # 2: Brief form of: self.x = x
 >         def bar(a, b):           # 3: Two arguments...
 >             print .x + a + b
 >
 >     Foo(10).bar(20, 30)          # ...and exactly two parameters

In my case, I think that the problem of _self_ is mainly in the method 
definition. It's a little "hard" to understand why you have to use 
myFunction(self, otherArgs) when you create a class method. But the use 
of self in the code of the method is a good thing because it allow you 
to clearly say that you are working on a class property. In my case, I 
would like to have the following syntax in Python 3.0 :

class Foo:
     def __init__(x):
	self.x = x
     def bar(a, b):
	print self.x + a + b

My 0.2€ ;)

-- 
Fabien SCHWOB


More information about the Python-Dev mailing list