What is not objects in Python?
Terry Reedy
tjreedy at udel.edu
Mon Sep 29 00:08:21 EDT 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).
tjr
More information about the Python-list
mailing list