КИНОАФИША РОССИИ

Киноафиша - Михаил Иванов - Python и Django - мои заметки - 26 апреля 2018: выполняя первое задание на Девмане

26 апреля 2018: выполняя первое задание на Девмане


Задание простое: прочесть файл с информацией о барах Москвы в формате JSON, попросить юзера ввести свои координаты (откуда он их знает?) и получить от программы: ближайший бар, самый большой бар города, самый маленький бар.

Не хочу делать задание как школьник: действие первое, действие второе и т.д. И сдавать на проверку, чтобы потом выбросить в помойку. Нет, не по мне. Коллега говорит: "ты слишком глубоко копаешь", типа рано, научись сначала азам. А мне неинтересны азы. Я хочу в глубину.

Всё в Питоне - объекты, включая методы (или функции, но я предпочитаю методы как более точный термин). То есть если есть объект и его методы, то каждый метод - тоже объект, к которому могут быть применены свои методы и т.д. Всё, что можно идентифировать - объект. Обладающий набором свойств (атрибутов) и методов (функций). Свойство (атрибут) - тогда тоже объект?

Я думаю, что да. Например, "красный" - это атрибут объекта "флаг". Но сам атрибут принадлежит классу объектов "цвета", кроме названия, имеющего и еще свойства, например, сокращение или имя на другом языке, или код цвета в какой-нить графической кодировке.  Как в природе всё - системы, имеющие связи и вложенности с другими системами, так и "объект" Питона - это "система" с внутренней структурой, внешними связями и поведением. Где и каждая связь и элемент поведения - тоже объекты. Так?

Теперь применительно к задаче "Бары": Я имею: 1. класс объектов бары. 2. Файл джейсон, как объект хранения всех экземпляров баров города Москва. 3. Файл моей программы, которая умеет (должна уметь) выбрать данные из объекта "файл джейсон" и уметь вести диалог с внешним юзером. 4. 4 (пока) метода, которые должны атомизировать поведение моей программы. И в идеале стать насколько возможно независимыми ни от данных,  ни от юзера, чтобы быть более гибкими и жизнеспособными (повторно используемыми). Все эти 4 перечисленные сущности - объекты. Управлять (изменять и улучшать) я могу только 2 последние, свои. Я считаю своей задачей не просто "чтобы оно сработало" и "было читаемым", а стало полностью "повторно используемым" и независимым от данных и юзеров. По сути я должен написать декораторы к уже имеющимся в Питоне методам?

На эти вопросы я отвечу сам в следующих постах.


А пока несколько мыслей. Функция - что это? Объекты находятся в отношениях, связях. Что это означает? Если один объект меняется (реализовывает какие-то поведенчиские методы), то связанные с ним объекты тоже меняются или меняют свое поведение. Например: один из баров Москвы закрылся на ремонт. Моя программа, как объект, связанный информационно с этим баром, должна изменить свое поведение? Конечно, должна, иначе она неизбежно станет выдавать ошибки. Не логические - код как работал, так и продолжит, не сломается, но если юзер рядом с этим баром, программа направит его к нему, а он закрыт. Конец использованию этой программы.
Повторю: функция - это связь между объектами. Может быть односторонней или двусторонней. Она может быть доведена до математической абстракции типа х = y*2. Но в реальности она достаточно конкретна и называется методом. Отвечающим на вопрос "как конкретное поведение конкретного объекта меняет его свойства или его поведение или свойства и/или поведение связанных с ним объектов".
Назначение как функций, так и методов: описание закономерностей, обычно в виде алгоритма, т.е. цепочки связанных действий. Как правило, с проверкой выполнения условия реализации первых элементов цепочки (причина - следствие). Пример: если время стало 7 утра, то выходит солнце, оно нагревает землю, поднимается туман. Этот процесс, происходящий с несколькими объектами: солнце, земля, вода, туман, описывается этим методом-алгоритмом с проверкой времени (хотя есть куча других факторов, которые тоже не мешает проверить).

Те самые факторы, которые влияют на поведение, называем параметрами метода (функции), в данном примере это время, хотя это явное упрощение, а весь комплекс факторов можно назвать контекстом.
Комментарии:Добавить
Новый комментарий:

Уведомлять об ответах на комментарий
E-Mail