如何解决在Python中,如何在不更改命名空间的情况下,将一个文件包含而不导入另一个文件宏样式?
| 首先,我确实了解\'import \'。当我尝试“导入”时,它不起作用。我正在尝试将一个模块分为两部分,其中一部分可以由一个组编辑,而另一部分则不能。我希望该小组编写定义明确的“检索功能”,而又不能诱惑运行它们的后端代码(甚至是偶然地)。 \'import \'上名称空间的更改正在妨碍我。我正在寻找File_B中File_A \文本的宏样式包含,以内联方式运行,就好像它是File_B的一部分一样。 这就是我正在做的: 我有一些通用代码,旨在依次调用信息检索功能列表,并以统一的方式存储信息。为此,我将其文本名称添加到列表中:DataTypes = [\'TypeA\',\'TypeB\',\'TypeC\']
...,然后定义一个知道如何获取每种类型的函数,并返回一个填充的对象类:
def Get_TypeA:
# do some stuff to retrieve info
InfoObj Data
# Populate Data with the info I got
return Data
def Get_TypeB:
# etc. etc.
return Data
def Get_TypeC:
# etc. etc.
return Data
# Backend code below this line,hopefully nobody touches it?
# (But really it would be best if this was in a different file
# that is harder to mess with and has locked-down permissions.)
class InfoObj:
# stuff stuff definitions methods etc.
这些功能将由只有Python的基本知识但经常有不良编码习惯的人来编辑,但他们需要能够经常自定义收集和显示的内容。我已经有一个可以检查列表并调用函数的后端,但是我只想将这些定义与其余的后端代码移到一个单独的文件中,但是就像它们直接在内联一样工作。 (即,将“希望没人触摸它”变成“人们必须竭尽全力去触摸它”)
Python有这个吗?
当我尝试使用Import时,检索功能将失去与InfoObj的定义的联系。无论我使用\'import otherFile \'还是\'from otherFile import * \',都会发生这种情况。
编辑:这就是我用来以标准方式检索各种类型的内容:
THISMODULE = sys.modules[__name__]
for type in DataTypes:
RetrievalFn = getattr( THISMODULE,\'Get_\'+type )
Data = RetrievalFn()
StoreInDB(Data)
(尽管这归结为基础,但有try / except子句,验证步骤可确保数据正确填充且不包含错误的类型或不良内容,并提供代码通知团队何时何地发生故障,但仍然发生故障处理其余项目。目标是进行编辑的人员不会破坏其余检查,即使他们的编辑破坏了其中一项检查也是如此。)
解决方法
可以使用
execfile()
完成此操作,但是您应该考虑为此使用其他一些机制,例如多态性或插件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。