python可以实现类似插件扩展吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python可以实现类似插件扩展吗?相关的知识,希望对你有一定的参考价值。

例如程序中函数实现了吃苹果,吃香蕉,吃橘子。这时候我还想实现吃西瓜,可不可以在不改变原代码的情况下通过传入的参数为西瓜,和外部的类似dll文件的方法实现。有没有可以实现的模块?或者方法?不用具体代码也行。谢谢啦!

没搞清楚你想做什么 传参数和dll有什么关系
python是支持扩展的 而且丰富的扩展正是python的强大之处
扩展可以用c/c++写 编译成动态库如so或dll 然后python脚本可以动态载入追问

谢谢你的回答!那我再详细的说一下吧:其实我要实现是这样一个功能,f(devicesType),返回的是一个设备的状态。但是每种设备的状态获取方式是不一致的,加入我需要适配新设备,能不能在完全不改变原代码的基础上,直接实现,例如我加个类直接引用,就是做成plugin的形式。不能完全用python做吗?还是说只能通过C编写动态库DLL。麻烦再解答一下吧,谢谢了!

追答

有很多种实现方法
最简单的就是用动态地根据类型载入不同的python模块
m = __import__(device_type)

或者
eval('import ' + device_type)
m = eval('reload(%s)' % device_type)

追问

谢谢楼主了!很对,后来我问了同事,和你说的一样。目前用的
module = __import__(class_path)
for comp in parts[1:]:
module = getattr(module, comp)
return module

参考技术A 123456789

以上是关于python可以实现类似插件扩展吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以在扩展 Python 时使用 C++ 功能吗?

你可以在插件中运行 XPC 服务吗? (例如,打印对话框扩展插件)

通过组合而不是继承导入 maven 插件配置。可以通过构建扩展来完成吗?

vscode能写java吗

chrome有类似搜狗网页消息盒子功能的插件吗?

可以在 VHDL 中完成动态可插拔模块吗?