Python и обекты

В питоне все является объектами. Модуль - объект. Функция - объект. Сам класс - объект. Экземпляры классов - объекты. При этом объектам можно присваивать имена, а информация о связи объектов и их имен хранятся в областях видимости (кстати, тоже объектах). Таким образом, именование объектов заменяет понятие переменной.

Что еще интересно - атрибуты класса никак не связаны с атрибутами его экземпляров. Перечислив в определении класса атрибуты, мы лишь задаем атрибуты именно класса, а начальный набор атрибутов экземпляра задается в конструкторе. Слава богу, хоть функции класса автоматически становятся методами объекта (кстати, метод - эта такая функция, в которую "зашито" значение ее первого параметра, традиционно трактуемого как экземпляр класса, для которого вызвана функция и обзываемого "self").
Причем атрибуты могут появляться (путем простого присвоения значения несуществующему атрибуту) или исчезать (если их явно удалять через del) прямо во время выполнения.

Итак, что мы получаем в теории: в теории мы получаем довольно стройную концепцию манипуляции, скажем так, элементами программы: классами, функциями, областями видимости, экземплярами и т.п. Имеем интересную концепцию именования объектов.

А что на практике? На практике получаем, что, когда дело доходит до кода, новая концепция оказывается практически аналогичной тем, что мы имеем в Java или C#. Все те же переменные, которым мы присваиваем значения. Все те же классы, с конструкторами, статическими и нестатическими полями. Разве что можно во время выполнения править набор атрибутов, в том числе, например, добавлять/удалять/менять методы. Итог, ИМХО, в том, что разработчики языка предложили нам тот же велосипед, но складной и в другом ракурсе.

(c) Коты тоже программируют



Опубликовал admin
18 Окт, Четверг 2007г.



Программирование для чайников.