2015-04-28 3 views
2

Почему python позволяет иметь код внутри абстрактного метода? Я знаю, что мы можем вызвать этот код через супер, но я не могу придумать причины, почему я хочу, чтобы мой абстрактный метод имел код в нем.Почему Python позволяет абстрактным методам иметь код?

+0

Обеспечить стандартную инфраструктуру? Python - это язык для консультирования взрослых, он не ограничивает вас расширением модели. –

+4

Абстрактные базовые классы - это инструмент *, в конце концов, не ограничивающее устройство. –

ответ

7

Это объясняется в abc module docs:

Примечание: В отличие от Java абстрактных методов, эти абстрактные методы могут иметь реализацию. Эта реализация может быть вызвана с помощью механизма super() из класса, который его переопределяет. Это может быть полезно в качестве конечной точки для супервызов в структуре, которая использует совместное многократное наследование.

(курсив наш.)

Это также объясняется в PEP, который ввел азбуке, и вы можете следовать по ссылкам с ППК на питона-разработчика и -ideas потоков, обсуждавшихся решение более подробно. (Это одно из преимуществ языка, разрабатываемого в широком открытии, для чего-либо, добавленного после 2.2, вам не нужно задаваться вопросом о таких вопросах, вы можете просто просмотреть всю дискуссию.)

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