微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决隐式访问可从当前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 举报,一经查实,本站将立刻删除。