What is not objects in Python?

Terry Reedy tjreedy at udel.edu
Mon Sep 29 06:08:21 CEST 2008

George Sakkis wrote:
> On Sep 28, 2:29 pm, process <circularf... at gmail.com> wrote:
>> I have heard some criticism about Python, that it is not fully object-
>> oriented.
> That's not a bug, it's a feature ;-)
>> Why isn't len implemented as a str.len and list.len method instead of
>> a len(list) function?
> As Terry Reedy wrote, partly history and partly practicality. There's
> no philosophical reason why we write "len(x)" (generic builtin),
> "x.append(1)" (method) or "del x[i]" (statement). The latter in
> particular is IMHO a design wart; there's no reason for not writing it
> as "x.delete(i)".

As a general rule and matter of practice, methods that apply to all or 
most classes (or all number classes) have built-in functions that call 
the corresponding special method (or C-level slot).  Methods that apply 
to one class (or just couple) are called as non-special methods.  I am 
not sure why del is a statement rather than a function -- perhaps just 
because there is no return value (other than the default None).


More information about the Python-list mailing list