[Python-Dev] copy, len and the like as 'object' methods?
Tim Peters
tim.one@home.com
Mon, 27 Aug 2001 16:00:36 -0400
[Tim, giving his "<wink>" key a rest]
> Say what?! What kind of stupid-ass language spells the len() function as
> if it were a method? That's carrying consistency to an irrational
> extreme --
[James_Althoff@i2.com]
> Well, only those stupid-ass, irrational, and extremist languages that
> include classes and methods as an integral and uniform part of
> the language from the very beginning, I guess.
I was more than half joking, but not entirely.
> The "stupid-ass, irrational, extremist" side is merely saying that
>
> mylist.append(x)
> mylist.length()
> mylist.extend(y)
> mylist.length()
>
> is more sensible (easier for new-to-python programmers to discover,
> more consistent, more mainstream)
Of course that's what they're saying, although "mainstream" is debatable:
pure-OO languages aren't exactly mainstream, and Python isn't a pure-OO
language. It doesn't follow that Python is mainstream, but neither does it
follow that ".length()" isn't an eyesore <wink>.
> But you all clearly like spelling it len(mylist) and it's already
> there, so
> ... whatever.
I wouldn't want to write math.pi.sin() either -- functional notation for
pure (referentially transparent; side-effect free) functions has a long and
fine tradition, in and out of computer languages, and I *think* "get the
length of some list", not "list, of all the things I may ask you for, in
this case I want your length". It simply reads better to me as a function.
Guido said he'd do it the other way had he to do it over, so I'll have to
rest on "it's already there".