Почему python позволяет иметь код внутри абстрактного метода? Я знаю, что мы можем вызвать этот код через супер, но я не могу придумать причины, почему я хочу, чтобы мой абстрактный метод имел код в нем.Почему Python позволяет абстрактным методам иметь код?
ответ
Это объясняется в abc
module docs:
Примечание: В отличие от Java абстрактных методов, эти абстрактные методы могут иметь реализацию. Эта реализация может быть вызвана с помощью механизма
super()
из класса, который его переопределяет. Это может быть полезно в качестве конечной точки для супервызов в структуре, которая использует совместное многократное наследование.
(курсив наш.)
Это также объясняется в PEP, который ввел азбуке, и вы можете следовать по ссылкам с ППК на питона-разработчика и -ideas потоков, обсуждавшихся решение более подробно. (Это одно из преимуществ языка, разрабатываемого в широком открытии, для чего-либо, добавленного после 2.2, вам не нужно задаваться вопросом о таких вопросах, вы можете просто просмотреть всю дискуссию.)
- 1. Декораторы по абстрактным методам
- 2. Что такое альтернатива статическим абстрактным методам?
- 3. Доступ к абстрактным методам класса C#, ASP.net
- 4. Почему ruby позволяет дочерним классам обращаться к закрытым методам родителей?
- 5. Почему js не позволяет методам как ключ/значение объекта?
- 6. Почему код не позволяет распечатать список?
- 7. Почему Python позволяет эти сравнения?
- 8. Spring AOP Pointcut не прилагая к абстрактным методам
- 9. Почему этот код позволяет мне обнаружить отладчик?
- 10. Позволяет пользователям выполнять код на Python на
- 11. Почему объединение не позволяет его элементам иметь определяемый пользователем конструктор?
- 12. Почему этот класс был абстрактным?
- 13. Почему ClassLoader является абстрактным классом?
- 14. Почему ValueType является абстрактным классом
- 15. Почему класс HttpServlet является абстрактным?
- 16. Почему wont java позволяет мне иметь это другое, если утверждение?
- 17. Почему DB2 не позволяет мне иметь столбец в разделе WHERE?
- 18. Почему Android не позволяет иметь заглавные буквы в именах ресурсов?
- 19. Почему python позволяет перезаписывать встроенные константы?
- 20. Почему Python позволяет сравнивать вызываемые и число?
- 21. Почему Python позволяет str умножаться на int?
- 22. Почему python не позволяет мне удалять файлы?
- 23. Почему python позволяет создавать разные атрибуты для одного класса?
- 24. Слайд-хостинг NSViews позволяет иметь подзаголовки?
- 25. Высыхание код с абстрактным классом в C#
- 26. визуальный код студии с абстрактным синтаксисом
- 27. Почему Java не позволяет назначать более слабые права доступа статическим методам в дочернем классе?
- 28. Почему Питон не позволяет дефис
- 29. Pygame позволяет классу иметь несколько экземпляров
- 30. Обернуть вызовы методам класса Python
Обеспечить стандартную инфраструктуру? Python - это язык для консультирования взрослых, он не ограничивает вас расширением модели. –
Абстрактные базовые классы - это инструмент *, в конце концов, не ограничивающее устройство. –