Bri*_*ian 2 python macros include
首先我知道'进口'.当我尝试'导入'时,它不起作用.我要做的是将一个模块分成两部分,其中一部分可以由一个组编辑,另一部分则不可编辑.我希望该组能够编写定义良好的"检索函数",而无需编辑运行它们的后端代码的诱惑或能力(甚至意外)."导入"中名称空间的更改正在阻碍我.我正在寻找在File_B中包含File_A文本的宏样式,以便内联运行,就像它是File_B的一部分一样.
这就是我正在做的事情:
我有一些通用代码,用于依次调用信息检索函数列表,并以统一的方式存储信息.为此,我将其文本名称添加到列表中:
DataTypes = ['TypeA','TypeB','TypeC']
Run Code Online (Sandbox Code Playgroud)
...然后定义一个知道如何获取每个类型的函数,并返回一个填充的对象类:
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.
Run Code Online (Sandbox Code Playgroud)
这些函数将由仅具有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)
Run Code Online (Sandbox Code Playgroud)
(虽然这归结为基础,有尝试/除外条款,验证步骤,以确保数据被正确填充,并且不包含不正确的类型或不好的东西,并且代码通知球队,如果和地方东西坏了,但仍然过程剩下的项目.目标是进行编辑的人不会破坏其余的检查,即使他们的编辑打破了其中一项检查.)