Я исхожу из фона С#, где язык имеет встроенные функции "защитить разработчика". Я понимаю, что Python использует подход "мы все взрослые здесь" и возлагаем ответственность на разработчика задумчиво и тщательно.
Тем не менее, Python предлагает условные обозначения, например, подчеркивание для частных переменных экземпляра. Мой вопрос в том, что существует конкретное соглашение для маркировки класса как абстрактного, отличного от простого указания его в docstrings? Я ничего не видел в руководстве по стилю python, в котором упоминаются соглашения об именах для абстрактных классы.
Я могу представить 3 варианта, но я не уверен, что они хорошие идеи:
- Укажите его в docstring над классом (может быть упущено)
- Используйте главное подчеркивание в имени класса (не уверен, что это общепринято)
- Создайте метод
def __init__(self):
для абстрактного класса, который вызывает ошибку (не уверен, что это отрицательно влияет на наследование, например, если вы хотите вызвать базовый конструктор)
Является ли один из них хорошим вариантом или есть лучший? Я просто хочу убедиться, что другие разработчики знают, что они абстрактны, поэтому, если они пытаются создать экземпляр, они должны нести ответственность за любое странное поведение.