Я обновляю некоторый код, чтобы использовать Dash и плотно.Основной код для построения графиков определяется внутри класса.Я заменил некоторые виджеты Bokeh элементами управления Dash и в результате получил обратный вызов, который выглядит следующим образом:
class MakeStuff:
def __init__(self, ..., **optional):
...
self.app = dash.Dash(...)
...
@self.app.callback(
dash.dependencies.Output('indicator-graphic', 'figure'),
[dash.dependencies.Input('start-time-slider', 'value'),
dash.dependencies.Input('graph-width-slider', 'value')]
)
def update_graphs(self,range_start,graph_width):
print(...)
Я следую некоторым примерам с сайта Dash .Я смог запустить примеры, в том числе обратные вызовы.В моем коде без декоратора код работает без ошибок, производя графику и элементы управления, как я и ожидал.(Конечно, код неполный, но ошибки нет.) Когда я включаю декоратор, я получаю эту ошибку:
NameError: имя 'self' не определено
Я устал так, во-первых, просто имитируя примеры кода:
class MakeStuff:
def __init__(self, ..., **optional):
...
app = dash.Dash(...)
...
@app.callback(
dash.dependencies.Output('indicator-graphic', 'figure'),
[dash.dependencies.Input('start-time-slider', 'value'),
dash.dependencies.Input('graph-width-slider', 'value')]
)
def update_graphs(self,range_start,graph_width):
print(...)
Конечно, переменная "app" известна только в рамках init функция, поэтому неудивительно, что это не работает, выдавая похожую ошибку:
NameError: имя 'app' не определено
Есть ли прямой способнастроить этот декоратор для работы, сохраняя при этом мой код в определении класса?Я предполагаю, что некоторая предварительная обработка продолжается с декоратором, но я не понимаю это достаточно хорошо, чтобы найти решение.