2013-06-24 5 views
1

Я намерен подклассифицировать класс ThumbnailBackend от sorl.thumbnail.base. Что мне нужно сделать, так это переопределить метод _get_thumbnail_filename, чтобы добавить материал к имени файла, сгенерированному исходным (родительским) методом. Для этого я написал что-то вроде этого:subclassing sorl-thumbnail класс `ThumbnailBackend` и переопределение _get_thumbnail_filename не работает

from sorl.thumbnail.base import ThumbnailBackend 

class MyThumbnailBackend(ThumbnailBackend): 
    def _get_thumbnail_filename(self, source, geometry_string, options): 
     oldpath = super(ThumbnailBackend,self)._get_thumbnail_filename(source, geometry_string, options) 
     oldpathlist = oldpath.split('/') 
     # get the last item of 'oldpathlist' and 
     # sufix it with useful info... 
     # join the items with the modified one... 
     return newpath 

Там должно быть что-то я пропускаю с наследованием питона, потому что я получаю следующее сообщение об ошибке:

AttributeError at /location/of/the/caller/class/ 
'super' object has no attribute '_get_thumbnail_filename' 

Если я прав, Я импортирую this class, в первой строке: from sorl.thumbnail.base import ThumbnailBackend, который определенно имеет метод _get_thumbnail_filename.

Что я делаю неправильно?

спасибо!

ответ

2

Вы должны вызвать супер с текущим классом, изменение super(ThumbnailBackend, self) к super(MyThumbnailBackend, self), как это

class MyThumbnailBackend(ThumbnailBackend): 
    def _get_thumbnail_filename(self, source, geometry_string, options): 
     return super(MyThumbnailBackend, self)._get_thumbnail_filename(source, geometry_string, options) 

 Смежные вопросы

  • Нет связанных вопросов^_^