Абстрактные методы в Python

Мне нужно что-то вроде метода abstract protected в Python (3.2):

class Abstract:
    def use_concrete_implementation(self):
        print(self._concrete_method())

    def _concrete_method(self):
        raise NotImplementedError()


class Concrete(Abstract):
    def _concrete_method(self):
        return 2 * 3

Действительно ли полезно определять «абстрактный» метод только для того, чтобы вызывать NotImplementedError?

Это хороший стиль использовать подчеркивание для абстрактных методов, которые будут защищены на других языках?

Может ли абстрактный базовый класс (abc) что-нибудь улучшить?

21
задан Sven Marnach 23 April 2012 в 14:58
поделиться