functions vs methods
MRAB
python at mrabarnett.plus.com
Sun Jul 22 11:49:03 EDT 2018
On 2018-07-22 10:08, Ben Finney wrote:
> INADA Naoki <songofacandy at gmail.com> writes:
>
>> Please don't refer the FAQ entry.
>> See this: https://bugs.python.org/issue27671
>
> Interesting. Thanks for raising that bug report.
>
> I offer my text as a starting point for a better explanation:
>
> Because ‘len’ works with *any* sequence, not only lists. To
> implement it as a method of each sequence type, it would have to be
> implemented on each type separately, which is a design that is
> needlessly more complex.
>
> This is common in Python: it uses so-called “duck typing”
> <URL:https://docs.python.org/3/glossary.html#term-duck-typing>,
> where the way an object behaves is more important than its type.
> Because “what is the length of this object” is a question valid for
> a broad variety of types, the design decision was made to allow it
> to accept any type for which that query makes sense.
>
> Feel free to use that (or something derived from it) to improve the
> documentation as you suggest.
>
Doesn't it have to be implemented on each type anyway?
The advantage is that it's enforces consistency.
In Java (or is it C#?) I seem to remember that some classes have a
.Length attribute, some have a .Length() method, and some have a
.Count() method.
In Python they're all len(...).
More information about the Python-list
mailing list