too many self

Elbert Lev elbertlev at hotmail.com
Fri Sep 17 04:19:27 CEST 2004


aurora <aurora00 at gmail.com> wrote in message news:<10kjrvs2hmb19a5 at corp.supernews.com>...
> Peter Hansen wrote:
> > aurora wrote:
> > 
> >> On Wed, 15 Sep 2004 23:14:47 +0200, Diez B. Roggisch
> >>
> >>> class ThreadPrinter:
> >>>     def __init__(self):
> >>>         _.fhs = {}
> >>>
> >>>     def write(self, value):
> >>>         f = _.fhs.get(threading.currentThread(),
> > 
> > ....
> > 
> >> Thanks this is a nice idea. I hope Python would actually support the 
> >> '_'  syntax. The self really reduce readablity, especially if you have 
> >> several  of them in one line.
> > 
> > 
> > It does!  One just has to be consistent within each function.
> > Diez changed the code from something like this:
> > 
> > def __init__(_):
> >     _.fhs = {}
> > 
> > def write(_, value):
> >     f = _.fhs.get(threading.currentThread(),
> > ...
> > 
> > Some would argue that this is actually less readable, however,
> > since it uses punctuation instead of a word.  If nothing else,
> > you run into a bit of a conflict between your own technique,
> > with "_", and the vast majority of the rest of the Python world,
> > which uses "self" exclusively, leading to situations like this
> > one...
> > 
> > (I think if I had a routine that really heavily used self,
> > to the obvious detriment of readability, and it wasn't clear
> > how else to improve it, I would use a local assignment at
> > the top to make a shorter name, perhaps "s", or even "_" --
> > but I wouldn't use the possibility of such a thing as a
> > justification for using _ everywhere.)
> > 
> > -Peter
> 
> Didn't aware that _ itself is a valid identifier! True, you don't really 
> want to do things differently from convention. I'm just ranting about 
> the verbosity of self.
> 
> This doesn't take a complicated statement to make it really clumsy. Some 
> simple statement would look like this:
> 
>    if self.max < self.list[self.index]:
>       self.max = self.list[self.index]:
> 
> Replacing self with _, depends on one's aesthetic, it could be ugly or 
> it could be cleaner. I like it that it is not a word and it does not 
> interfere with the keywords that's really relevant.
> 
>    if _.max < _.list[_.index]:
>       _.max = _.list[_.index]:
> 
> Of couse I think this syntax the best:
> 
>    if max < list[index]:
>       max = list[index]:
> 
> This remind me of those awful Hungarian notation.
> 
> aurora


Please do not do this, please... 
Recently I was working with a modules written by a programmer, 
who used "_" instead of "self". 
This was so "not in line" with the rest of the system, 
that it took me extra hour or two to get accustomed 
and switch back and force (self in "standard" modules and _ in "economical").



More information about the Python-list mailing list