Один пример, который обычно приводится, это len
, который в Python является встроенной функцией. Вы можете реализовать специальный метод __len__
в ваших объектах, который будет вызываться len
, но len
все еще является функцией. В Ruby объекты просто имеют свойство / метод .length
, поэтому он выглядит более объектно-ориентированным, когда вы говорите obj.length
, а не len(obj)
, хотя в глубине души происходит почти то же самое.
Тем не менее, за эти годы Python продвинулся к большей объектной ориентации. В настоящее время все объекты (и неявно определенные пользователем объекты) наследуются от класса object
. Также были добавлены метаклассы, и многие из встроенных и базовых классов библиотеки были организованы в иерархии с помощью ABC (абстрактных базовых классов).
В моем интенсивном использовании Python я никогда не обнаруживал недостатка в OO отделе. Он может делать все, что я хочу, это делать с объектами. Правда, Ruby чувствует несколько более чисто ОО, но по крайней мере, по моему опыту, это не было действительно практической проблемой.