Как сделать Python классы «действительно» абстрактными - PullRequest
1 голос
/ 15 марта 2019

Я экспериментировал, чтобы увидеть, можно ли абстрагировать классы 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, чтобы он мог быть действительно абстрактным?

...