Guido's new method definition idea

Lie Ryan lie.1296 at gmail.com
Mon Dec 8 08:30:52 CET 2008


On Sun, 07 Dec 2008 12:57:27 +0100, News123 wrote:

> Lie wrote:
>> On Dec 7, 1:02 am, News123 <news... at free.fr> wrote:
>>> What would be interesting would be some syntactical sugar to get rid
>>> of the 'self' (at least in the code body).
>>>
>>> example:
>>> class C:
>>>     class_elements a,b,c,d
>>>
>>>     def method(self,arg):
>>>         global d
>>>         a,b,c = arg[0..3]
>>>         d = a + b
>>>         self.e = a + d
>>>
>>>
>> Nah, that would make it not explicit. Explicit here also means that to
>> refer to self's a, we need to explicitly refer to self.
> 
> Well being explicit when trying to suggest an implicit syntax (in order
> to reduce typing) is a little difficult ;-)
> 
> Though you're right my main goal is not being implicit but would be
> reducing typing and have shorter source code lines.
> 
> If 'global '<varname>' is accepted inside a def, then moving
> 'class_elements <varnames>' inside the def could be acceptable as well
> though it would requiere, that this statement is repeated per def
> 

The advantage of explicit self is to easily differentiate instance 
variable with local variable/names. When I need to shorten the code, I'll 
simply alias it to a local name, no need for syntax change or new keyword.

class C(object):
    def __init__(self):
        self.a = 2
        self.b = 2
        self.c = 3
    def x(self):
        #return ((-self.b + math.sqrt(self.b**2 - 4 * self.a * self.c)) / 
(2 * self.a)), ((-self.b - math.sqrt(self.b**2 - 4 * self.a * self.c)) / 
(2 * self.a))

        a, b, c = self.a, self.b, self.c
        sq = math.sqrt
        return ((-b + sq(b**2 - 4*a*c)) / (2*a)), ((-b - sq(b**2 - 
4*a*c)) / (2*a))




More information about the Python-list mailing list