隐式访问可从当前Process范围获得但在Python当前模块外部的变量

问题描述

我正在创建一个平台,用户可以在该平台上编写应用程序可以理解的key:基于值的配置。在这些配置中,我提供了编写和调用python代码段的支持。如下所示:

def func(self,x):
    import MyClass
    return MyClass(x,self.attr1)

attr1 val1
attr2 func(self,x)
attr3 MyClass(x)

可以看出,任何值都可能取决于配置中的其他值,为此对象可以在范围内使用诸如 self 之类的对象。请注意, attr2 v / s attr3 都创建了一个相同类但在不同作用域中的对象。

  1. attr2 评估一个python函数,并将对 self 的引用传递给作用域。此功能还需要将所需的信息从 self 传递给 MyClass 构造函数
  2. attr3 直接调用构造函数,但是由于该对象是在config对象的范围内创建的,因此它的引用可用作 parent MyClass 对象,并且在内部使用 self.parent.attr1 进行创建。

这最终将为我的应用程序创建类似的对象,即 attr2 == attr3

用户的角度来看,当 MyClass 需要 self 的许多属性,而他们需要手动添加所有属性时,这可能会很麻烦。其次,最好为用户提供这种创建对象的同质方式,无论是通过config还是python函数,因为两者都存在于同一外部范围内。因此,我希望提供以下定义 attr2 方法,它应该与上述 attr3 类似:

def func(x):
    import MyClass
    return MyClass(x)

attr1 val1
attr2 func(x)

是否有任何方法可以隐式地理解将在客户端代码中创建的特定于应用程序的对象的上下文?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)