Найти - Пользователи
Полная версия: Организация проекта на Pylons
Начало » Pyramid / Pylons / TurboGears » Организация проекта на Pylons
1
brutka
поделитесь, пожалуйста, опытом в таком вопросе:
вы пишите методы прямо в классе модели?
я попробовал писать методы там - но мне показалось неудобным, что размер этих классов становится реально слишком большим.
перешел на создание функций в папке lib (ну и как параметр функции передаю экземпляр класса).
а как кто еще?
спасибо
appetito
может в вашем случае имеет смысл не использовать декларативный способ описания моделей. Определять таблицы отдельно от моделей, тогда класс модели будет не таким громоздким.
uhbif19
Можно разделить классы на несколько файлов.
brutka
uhbif19
Можно разделить классы на несколько файлов.
как это делается? где почитать?
ziro
brutka
как это делается? где почитать?
Тут наверное имеется ввиду разделение функционала одного класса на несколько других классов. Например, при наследовании через mixin'ы. Хороший рецепт трудно предложить без понимания всей проблемы.

Например, sqlalchemy поддерживает модификацию классов запросов через session.query_property(SomeQueryClass), для которых Вы можете определить дополнительные методы выполняющие разные выборки для конкретного класса. Также sqlalchemy поддерживает расширения для relation, которые позволяют вводить дополнительные действия при добавлении/удалении объектов из коллекций и т.д.

Проще, на мой взгляд дать пример, который показывает как можно расширить функционал алхимии различными способами - http://github.com/mitsuhiko/solace/blob/master/solace/models.py
uhbif19
ziro С трудом представляю себе такие огромные классы, в которых недостаточно простых методов, и необходимо использовать какие-то левые библиотеки.

brutka Просто вместо хранения классов в __init__.py, пихаете каждый в свой файл, а затем его импортите в __init__.py. Так код будет гораздо более читабелен при больших классах.
brutka
uhbif19
С трудом представляю себе такие огромные классы
вот я как раз и начинаю подозревать, что организовываю классы не верно.
ну например: класс Человек.
у него есть аттрибуты (штук 50), и потом уйма методов, типа получить фото (которое проверяет, есть ли фото или нет), есть аттрибует получить детей и т.д. и т.п.
и получается очень много методов у меня…
Андрей Светлов
делаете класс “фото”. Наследуете “человека” от него.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB