Re[4]: [Python] нужна идея
От: mishaa Россия http://kmmbvnr.livejournal.com
Дата: 04.12.08 08:15
Оценка:
Здравствуйте, achmed, Вы писали:


A>Можно описывать функцию получения id в комментарии метода


A>
A>    @render('task-summary.xsl', debug=True, cache=False)
A>    @access(Task_Permission, "view_summary")
A>    def task_summary(self, id):
A>    """
A>    uid:
A>        return id
A>    """
A>        return "the summary ..."

A>


Ага, а еще одно чисто python-решение, таки использовать вместо функций, обычные классы
-- Главное про деструктор копирования не забыть --
Re[5]: [Python] нужна идея
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 04.12.08 08:54
Оценка:
Здравствуйте, mishaa, Вы писали:

M>Ага, а еще одно чисто python-решение, таки использовать вместо функций, обычные классы


а как это поможет в данной задаче?
Re[6]: [Python] нужна идея
От: mishaa Россия http://kmmbvnr.livejournal.com
Дата: 04.12.08 10:20
Оценка:
Здравствуйте, achmed, Вы писали:

A>Здравствуйте, mishaa, Вы писали:


M>>Ага, а еще одно чисто python-решение, таки использовать вместо функций, обычные классы


A>а как это поможет в данной задаче?


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

Если очень хочеться, можно делать как-то так:
@cached('profile')
class UserController(controlers.Controller):
    profile = controlers.Param(default=None)
    user = controlers.UserParam()

    def request():
       return {'yep': self.profile }


controlers.Controller должен немного копаться в классе, и давалять __call__ с нужной сигнатурой.

И пользовать, как-то так:

UserController(profile='main', user='admin')

Если декораторам нужны какие-то вычисляемые значения, это легко добавляется через property.

Плюсы очевидны, глядя на код, почти сразу понятно, что от чего зависит.
-- Главное про деструктор копирования не забыть --
Re[7]: [Python] нужна идея
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 04.12.08 12:30
Оценка:
Здравствуйте, mishaa, Вы писали:

M>Вся задача, это задача о реализации интерфейса, предоставляемого одним кусоком кода другому.

M>Смысла реализовывать подобный интерфейс неявно я особо не вижу

Смысл был в минимальных изменениях существующего кода (или существующей структуры), насколько я понимаю

M>Если очень хочеться, можно делать как-то так:

M>
M>@cached('profile')
M>class UserController(controlers.Controller):
M>    profile = controlers.Param(default=None)
M>    user = controlers.UserParam()

M>    def request():
M>       return {'yep': self.profile }
M>


M>controlers.Controller должен немного копаться в классе, и давалять __call__ с нужной сигнатурой.


M>И пользовать, как-то так:


M>UserController(profile='main', user='admin')


M>Если декораторам нужны какие-то вычисляемые значения, это легко добавляется через property.


M>Плюсы очевидны, глядя на код, почти сразу понятно, что от чего зависит.


Много кода писать надо ...
Re[8]: [Python] нужна идея
От: mishaa Россия http://kmmbvnr.livejournal.com
Дата: 04.12.08 12:48
Оценка:
Здравствуйте, achmed, Вы писали:


A>Много кода писать надо ...



Не больше чем нужно. Explicit better than implicit
-- Главное про деструктор копирования не забыть --
Re[9]: [Python] нужна идея
От: dmz Россия  
Дата: 05.12.08 08:36
Оценка:
M>Не больше чем нужно. Explicit better than implicit



Вся история развития правильных языков — про то, как иметь результат, работая как можно меньше.
Меньше кода — меньше писать и меньше ошибок; Меньше побочных эффектов — меньше ошибок.

Соответственно, появляется простая метрика для оценки того или иного средства или подхода.

А Explicit better than implicit можно оставить для ван Россума и Ko, которые вместо реального
развития языка занимаются исключительно syntax sugar, каковым подходом язык и похоронят ну или
забьют обратно в нишу языка для скриптиков, из которой он было вылез.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.