Я пишу приложение на основе плагинов.Часть спецификации для плагина заключается в том, что плагин не должен реализовывать метод __init__
, так как любая инициализация должна обрабатываться менеджером плагинов, а не самим плагином.(Автор плагина определит свой код запуска в другом методе, вызываемом менеджером плагинов после выполнения некоторых проверок.)
Для применения этого стиля диспетчер плагинов должен завершиться с ошибкой, вызвать исключение или выполнить какой-либо другойобескураживающее действие, если используется __init__
.
Я подумал, что могу просто проверить, определено ли __init__
:
# minimaltest.py
__meta__ = "Minmimal metadata"
# main.py
import minimaltest
hasattr(minimaltest, '__meta__') # => True
hasattr(minimaltest, '__somethingimadeup__') # => False
hasattr(minimaltest, '__init__') # => True?!
Проблема: вызов hasattr
всегда возвращает True
Как я могу убедиться, что любой предполагаемый скрипт плагина не реализовал метод __init__
?