A Python 3000 Question

Michael L Torrie torriem at chem.byu.edu
Mon Oct 29 21:35:04 EDT 2007


brad wrote:
> Not complaining. len is simple and understandable and IMO fits nicely 
> with split(), strip(), etc... that's why I used it as an example, but 
> list(), etc. could be used as examples as well:
> 
> a_string.list() instead of list(a_string)

This is a great example of why list() needs to be a singleton and *not*
a method of any particular class.  Consider the following contrived
object (yes object):

def foo():
    for x in xrange(6):
        yield x


If we eliminated list() as a first class singleton and forced it to be a
method call, how would it work with this generator object?  Right now I
can say:

mylist=list(foo())

Saying list() should be a method only of something iterable is not only
foolish, but wasteful.  Why should I burden every iterable object with
redundant code?  And how would you deal with generators in your scenario?

In short, making list() a method is wrong-thinking.  Reminds me of java.
 Ugg.

> 
>> And to answer the question. In OO programming generic functions
>> are no less important than classes and objects.
> 
> Do they not take away from the OOness of the overall language and 
> introduce inconsistencies?

If find Python to be more OO through and through than Java.  Once you
understand that functions are objects, and duck-typing, things like
len() being a function rather than a method make perfect sense.





More information about the Python-list mailing list