gpt4 book ai didi

Python - 主程序的插件

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

我需要制作一个脚本来调用特定目录中的每个 .py 文件。这些是主程序的插件。每个插件脚本必须能够从调用脚本访问类和方法。

所以我有这样的东西:

mainfile.py:

class MainClass:
def __init__(self):
self.myVar = "a variable"

for f in os.listdir(path):
if f.endswith(".py"):
execfile(path+f)

def callMe(self):
print self.myVar

myMain = MainClass()
myMain.callMe()

我希望能够在callee.py中执行以下操作

myMain.callMe()

仅仅使用import是行不通的,因为mainfile.py必须是正在运行的程序,callee.py可以被删除并且mainfile 将自行运行。

最佳答案

import os
class MainClass:
def __init__(self):
self.myVar = "a variable"
self.listOfLoadedModules = []

for f in os.listdir("."):
fileName, extension = os.path.splitext(f)
if extension == ".py":
self.listOfLoadedModules.append(__import__(fileName))

def callMe(self):
for currentModule in self.listOfLoadedModules:
currentModule.__dict__.get("callMe")(self)

myMain = MainClass()
myMain.callMe()

使用此代码您应该能够调用 callMe当前目录中任何 python 文件的函数。该函数将有权访问 MainClass ,因为我们将其作为参数传递给 callMe .

注意:如果您调用callMeMainClass在 callee.py 的 callMe 内,这将创建无限递归,您将得到

RuntimeError: maximum recursion depth exceeded

所以,我希望你知道自己在做什么。

关于Python - 主程序的插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19485728/

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