У меня есть класс, у которого есть метод output (), который возвращает экземпляр Figure matplotlib. У меня есть декоратор, который я написал, который берет этот экземпляр fig и превращает его в объект ответа Django.
Мой декоратор выглядит так:
class plot_svg(object):
def __init__(self, view):
self.view = view
def __call__(self, *args, **kwargs):
print args, kwargs
fig = self.view(*args, **kwargs)
canvas=FigureCanvas(fig)
response=HttpResponse(content_type='image/svg+xml')
canvas.print_svg(response)
return response
и вот как оно использовалось:
def as_avg(self):
return plot_svg(self.output)()
Единственная причина, по которой я так поступаю вместо использования синтаксиса "@", заключается в том, что когда я делаю это с "@":
@plot_svg
def as_svg(self):
return self.output()
Я получаю эту ошибку:
as_svg() takes exactly 1 argument (0 given)
Я пытаюсь «исправить» это, поместив его в синтаксис «@», но я не могу понять, как заставить его работать. Я думаю, что это как-то связано с тем, что self
не проходит там, где он должен ...