Я новичок в Python и создаю оболочку для API. Я бы хотел, чтобы пользователь сам решал, хочет ли он использовать декоратор для методов, которые я выставляю из своего модуля.
Например:
# create a new instance
api = MyApi()
# return a simple json response with all the data related to a timetable
print api.time_table
Теперь у пользователя есть все данные, и он может делать все, что захочет. Например, я хотел бы добавить какие-то «удобные» методы; чтобы позволить пользователю получить небольшую часть json вместо всего большого ответа json.
Моя идея заключалась в том, чтобы использовать для этого декораторы Python. При желании моя цель может быть примерно такой:
# use the method and get al the data
print api.time_table
# Optionally, get a specific part, just the shows part. (PSEUDO CODE BELOW)
@shows
print api.time_table
Естественно, декораторы работают не так, но есть ли способ опционально использовать декоратор в существующем методе класса, или декоратор всегда должен оборачивать исходный метод?
Итак, каков самый питонический способ здесь? Я действительно хотел бы использовать декоратор, но если это плохая идея, я могу просто создать больше «удобных» методов внутри моего класса Api
.
print
). Вместо этого вы расширите свой API, чтобы предоставить пользователю больше возможностей. - person Martijn Pieters   schedule 29.03.2014@foo
применительно кbar
точно совпадает сbar = foo(bar)
; заменаbar
возвращаемым значениемfoo
при вызове сbar
в качестве аргумента. - person Martijn Pieters   schedule 29.03.2014