Я экспериментировал, чтобы увидеть, можно ли абстрагировать классы Python, и я наткнулся на этот вопрос переполнения стека во время исследования. Однако, похоже, что ABC
только требует от подклассов реализации методов с помощью декоратора @abstractmethod
; это не запрещает прямую реализацию абстрактного класса. Чтобы показать пример в коде:
from abc import ABC
class Abstract(ABC):
pass
class Concrete(Abstract):
pass
if __name__ == '__main__':
# should raise exception, but doesn't
jawn = Abstract()
Есть ли способ полностью предотвратить создание экземпляров класса Python, чтобы он мог быть действительно абстрактным?