Здравствуйте, 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-решение, таки использовать вместо функций, обычные классы
Здравствуйте, mishaa, Вы писали:
M>Ага, а еще одно чисто python-решение, таки использовать вместо функций, обычные классы
а как это поможет в данной задаче?
Здравствуйте, 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.
Плюсы очевидны, глядя на код, почти сразу понятно, что от чего зависит.
Здравствуйте, 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>Плюсы очевидны, глядя на код, почти сразу понятно, что от чего зависит.
Много кода писать надо ...
M>Не больше чем нужно. Explicit better than implicit
Вся история развития правильных языков — про то, как иметь результат, работая как можно меньше.
Меньше кода — меньше писать и меньше ошибок; Меньше побочных эффектов — меньше ошибок.
Соответственно, появляется простая метрика для оценки того или иного средства или подхода.
А Explicit better than implicit можно оставить для ван Россума и Ko, которые вместо реального
развития языка занимаются исключительно syntax sugar, каковым подходом язык и похоронят ну или
забьют обратно в нишу языка для скриптиков, из которой он было вылез.