tgoop.com/metaprogramming/55
Create:
Last Update:
Last Update:
Питоновские пакеты, из-за обязательного явного импорта, могут экспортировать не только классы, но и переменные или константы:
# some_file.pyПолучается своеобразная двойная иерархия: классы наследуют друг друга, а пакеты друг из друга импортируют всякую всячину. Поэтому в Питоне, где можно, частенько классы и не создают, просто группируют функции внутри файла (и файлы внутри пакета), и импортируют их в других файлах (и других пакетах). В Ruby для создания коллекции функций обязательно использовать, по меньшей мере, модули (modules); но вообще в качестве стандартной единицы распространения кода выступает класс, при этом имя файла (по соглашению/кодстайлу) однозначно соответствует имени класса (и в одном файле всегда только один класс).
NUMBER = 1
# another_file.py
from .some_file import NUMBER
print(NUMBER) #=> 1
Как было сказано выше, в Django в роли "вьюх" (т.е., в терминах Rails, "контроллеров") могут выступать отдельные функции. А могут и классы. Первое называется function based views, а второе class based views.
Привыкшему к REST веб-разработчику сподручнее сразу использовать class based views, чтобы не получать очередного когнитивного диссонанса от использования конструкций вроде
if request.method == 'POST'
в мейнстримном фреймворке, созданном на самом элегантном языке программирования.#programming #django #python
BY Metaprogramming
Share with your friend now:
tgoop.com/metaprogramming/55