Do I always have to write "self." ?
Cedric Adjih
adjih at crepuscule.com
Fri Apr 28 10:12:01 EDT 2000
Louis M. Pecora <pecora at anvil.nrl.navy.mil> wrote:
> In article <slrn8ghc6t.f01.scarblac-spamtrap at flits104-37.flits.rug.nl>,
> Remco Gerlich <scarblac-spamtrap at pino.selwerd.nl> wrote:
>> No. However, this seems to make code *more* readable. In fact, many C++
>> programmers use 'this.x' for all their instance variables, to be able to
>> see at a glance which are just local variables of the function and which are
>> instance variables. It's just more work to write, but that doesn't matter
>> much.
> I understand the potential for readability, but I do a lot of
> mathematical programming so the expressions can get pretty cluttered
> with variables and operators. More self's only makes it worse for me.
> Maybe that's my problem, but then that's my complaint.
Alternatively you could use 1-liners, if it is justified
class Polynom2:
def __init__(self,a,b,c):
self.a,self.b,self.c=a,b,c
def delta(self):
return self.b*self.b-4*self.a*self.c
Often, 1-liners will remove the need for one comment.
>> Python needs it to know which vars are instance variables, and which are
>> local variables.
> I'm sure some way of declaring variables 'local' could be done in the
> class defintion, but I doubt Guido would do that now.
>> Funny how people say that every aspect of Python they don't like make the
>> language less "clean". It is extremely consistent though.
> Funny, I guess. Harder to read for me.
>> You *can* use another word for 'self' though, 's' or 'me' or something. But
>> it makes your code harder to read, of course...
> You mean by doing something like
> s=self
> at the beginning of each class method?
The name 'self' is just a convention.
But since some parsing software will rely on it, "s=self"
might be wiser.
class Polynom2:
def delta(s): return s.b*s.b-4*s.a*s.c
or
class Polynom2:
def delta(self):
s=self
return s*b*s.b-4*s.a*s.c
or the other suggestions for read-only attributes:
class Polynom2:
def delta(self):
a,b,c=self.a,self.b,self.c
return b*b-4*a*c
-- Cedric
More information about the Python-list
mailing list