gpt4 book ai didi

Python;如何将方法导入类 'pluginstyle' ?

转载 作者:太空宇宙 更新时间:2023-11-03 19:28:55 24 4
gpt4 key购买 nike

我正在尝试创建一个从类似插件的模块导入其方法的类。

我希望这个类能够从存储在单独文件夹(即“插件”)中的模块导入函数/变量。这可能吗?

我知道__import__(),但是我如何使用它来导入,以便它们属于此类?

假设我在“插件”文件夹中有以下模块:

plugins/pluginA.py
plugins/pluginB.py

在这些模块中,我有函数等。我希望能够在类中导入和访问它们。也许是这样的:

MyClass.pluginA.some_function_from_A()
MyClass.pluginB.some_function_from_B()

或者也许像这样

MyClass.some_function_fromA()
MyClass.some_function_fromB()

最佳答案

我会将问题分为两部分:将文件列表转换为模块列表,然后扩展该类以包含这些模块中的函数。

布雷特·坎农 (Brett Cannon) 已报道 how to import a module from just a file path ,所以我不会在这里重复...尽管我建议您查看 glob模块。

第二,如何扩展类以包含插件中的功能。我会使用这样的东西:

def extend(obj, plugin_modules):
for module in plugin_modules:
for export_name in dir(module):
export = getattr(module, export_name)
if callable(export):
setattr(obj, export_name, export)


class MyClass(object):
… code …

extend(MyClass, plugin_modules)

但是,我会警告您,这不太可能是您想要的,因为 MyClass 上的“插件”函数的行为不会与 native 方法完全相同......如果您提供有关您想要做什么的更多信息,我也许能够给出更有帮助的答案。

关于Python;如何将方法导入类 'pluginstyle' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6964732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com