运行只能读/写主要应用程序变量子集的外部Python脚本

2024-05-14 19:27:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python应用程序,它模拟系统的行为,比如说汽车

该应用程序定义了一组相当大的变量,其中一些对应于真实世界的参数(剩余燃油量、车速等),另一些与用户不感兴趣的模拟器内部力学相关

一切正常,但当前用户在执行过程中无法与模拟进行任何交互:她只需设置模拟参数、启动模拟并等待模拟终止

我希望用户(即而不是应用程序的创建者)能够在应用程序之外编写Python脚本,可以读取/写入与真实世界参数相关的变量(并且仅限于这些变量)

例如,在t=23s时(我知道如何检查这个条件),我想执行用户脚本gasLeak.py,它读取剩余的燃料值并将其设置为当前值的一半

总之,如何从Python主应用程序执行用户编写的Python脚本,这些脚本只能访问和修改主脚本变量的预定义子集。在一个完美的世界中,我还希望在应用程序运行期间应用于用户脚本的修改被考虑在内,而无需重新启动所述应用程序(在模块运行过程中)


Tags: 用户脚本应用程序参数过程模拟器条件汽车
2条回答

让用户编写的脚本读取命令行参数并打印到stdout。然后,您可以使用subprocess模块调用它们,将它们需要知道的变量作为参数,并使用subprocess.check_output读取它们的响应

实现这一点的一种方法是将应用程序属性封装在一个类中,并使您想要对用户隐藏的变量“私有”,或者更确切地说是伪私有,因为Python没有真正的访问修饰符。通过使用下划线,可以有效地实现可变私有化。看到这个post. 变为“private”的变量在类定义之外是不可访问的,因此它们对用户脚本是隐藏的

相关问题 更多 >

    热门问题