【发布时间】:2019-09-11 04:41:44
【问题描述】:
我正在编写一个基于插件的应用程序。插件规范的一部分是插件不得实现__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__ 方法?
【问题讨论】:
标签: python class oop initialization python-import