George Sakkis wrote:
On Sep 28, 2:29 pm, process <[EMAIL PROTECTED]> 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
--
http://mail.python.org/mailman/listinfo/python-list