隐式访问当前进程范围中可用的变量,但不在Python的当前模块中
我正在创建一个平台,在这个平台上,用户可以编写我的应用程序能够理解的基于key:value的配置。在这些配置中,我提供了编写和调用python代码段的支持。如下所示:隐式访问当前进程范围中可用的变量,但不在Python的当前模块中,python,python-3.x,module,scope,global-variables,Python,Python 3.x,Module,Scope,Global Variables,我正在创建一个平台,在这个平台上,用户可以编写我的应用程序能够理解的基于key:value的配置。在这些配置中,我提供了编写和调用python代码段的支持。如下所示: def func(self, x): import MyClass return MyClass(x, self.attr1) attr1 val1 attr2 func(self, x) attr3 MyClass(x) 可以看出,任何值都可能依赖于配置中的其他值,对于这些值,像self这样的对象在作用域中可
def func(self, x):
import MyClass
return MyClass(x, self.attr1)
attr1 val1
attr2 func(self, x)
attr3 MyClass(x)
可以看出,任何值都可能依赖于配置中的其他值,对于这些值,像self这样的对象在作用域中可用。请注意attr2和attr3,它们都创建了同一类的对象,但作用域不同
是否有任何方法可以隐式地理解特定于应用程序的对象的上下文,这些对象将在客户机代码中创建?到目前为止,我已经评估并放弃了以下方法:1。使自我全球化。2.用户将self传递给MyClass。3.通过字符串操作修改用户的代码。我不知道您的用例,但是如果用户可以使用python代码段,为什么不提供一个API,让用户编写完整的配置脚本,而不是这种复杂的配置和python混合体?@Xtrem532我的应用程序的主要界面是配置。我的主要目标受众是天真的用户,他们只知道为自己的用例编写小python脚本。为他们提供一些易于使用的配置函数和一个带有大注释的模板文件
“您的配置在这里”
可能比这个奇怪的python/键值配置组合工作得更好
def func(x):
import MyClass
return MyClass(x)
attr1 val1
attr2 func(x)