确保Python中没有_init__函数

确保Python中没有_init__函数,python,class,oop,initialization,python-import,Python,Class,Oop,Initialization,Python Import,我正在编写一个基于插件的应用程序。插件规范的一部分是,插件不得实现\uuuu init\uuuu方法,因为任何初始化都需要由插件管理器处理,而不是插件本身。(插件编写器将用另一种方法定义它们的启动代码,在满足某些检查后由插件管理器调用。) 如果使用\uuuu init\uuuu,插件管理器应该会失败、抛出异常或执行其他一些令人沮丧的操作来强制执行此样式 我想我可以检查一下\uuuuu init\uuuu是否已定义: #minimatest.py __meta_u=“最小元数据” #main.p

我正在编写一个基于插件的应用程序。插件规范的一部分是,插件不得实现
\uuuu init\uuuu
方法,因为任何初始化都需要由插件管理器处理,而不是插件本身。(插件编写器将用另一种方法定义它们的启动代码,在满足某些检查后由插件管理器调用。)

如果使用
\uuuu init\uuuu
,插件管理器应该会失败、抛出异常或执行其他一些令人沮丧的操作来强制执行此样式

我想我可以检查一下
\uuuuu init\uuuu
是否已定义:

#minimatest.py
__meta_u=“最小元数据”
#main.py
导入最小值测试
hasattr(最小测试,'.'.'元'.''.=>真
hasattr(minimatest,“\uuuu somethingimadeup”\uuuuu')\u35;=>False
hasattr(最小测试,'.'初始'.''.=>真的?!
问题:
hasattr
调用总是返回True


我如何确保任何潜在的插件脚本都没有实现
\uuuuu init\uuuu
方法?

hasattr返回
True
,因为我们创建的最小
类继承自
对象
,它与定义的方法一起提供

如果我们想知道我们的最小
有哪些方法,而不需要得到它的
超类
定义的方法,您可以调用
\uuu dict\uuu
并获得一个
列表
,该列表使用
键可以简单地进行测试:

如果“\uuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
raise RUNTIMERROR(“插件可能不定义初始化方法”)