Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 10, 2013 11:49:49

Nixxx
Зарегистрирован: 2013-09-09
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Декоратор абстрактного метода

Появилась идея создать декоратор абстрактного метода класса, суть его работы такова:
при указании декоратора к методу класса при наследовании этого класса другими метод должен быть переопределён, иначе на этапе создания класса(а не экземпляра) будет выкинуто исключение.
Проблема в том, что если делать так:

def abstr(f):
    #Выполнение проверки и выброс исключения исключения
class A():
    @abstr
    def foo: pass
class B(A):
    pass
Выполнение проверки в декораторе будет выполнено при создании класса A и не будет выполняться при создании класса B.
Есть ли способы реализовать проверку в декораторе при использовании наследования?

Отредактировано Nixxx (Сен. 10, 2013 11:50:23)

Офлайн

#2 Сен. 10, 2013 16:45:44

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Декоратор абстрактного метода

> Есть ли способы реализовать проверку в декораторе при использовании наследования?

Читайте про метаклассы, с помощью них эт легко сделать.

Впрочем, то что вы хотите уже есть в стандартнй библитеке: http://docs.python.org/2/library/abc.html#abc.abstractmethod

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version