1
www5070504 2019 年 7 月 4 日
a = __import__("模块名")
a.xx 这种行不 或者用 eval eval 不太安全 |
2
beneo OP @www5070504 都是我们内部使用,我觉得 eval 还好,我在找有没有更好的
|
3
Maboroshii 2019 年 7 月 4 日 via Android
先写到文件,再执行文件
|
4
pmispig 2019 年 7 月 4 日
先写到文件,再动态 import ?
|
5
no1xsyzy 2019 年 7 月 4 日
AST 现场修改代码
PyMacro 似乎就是这么干的 |
6
oatw 2019 年 7 月 4 日
元编程? Ruby 是可以实现的,Python 不清楚。
不过 Python 不也是动态语言吗?有编译时?!还是只有运行时? |
7
zealic 2019 年 7 月 4 日
Py in Py
|
8
xiaket 2019 年 7 月 4 日
动态代码加载如果还觉得不够的话, 可能只能和楼上说的一样, 用元编程定义一个 DSL 了. 如果不想搞那么复杂, 搞一个中间文件格式出来, 所有客户的输入都统一转成这个格式, 然后再统一处理也行
|
9
myyou 2019 年 7 月 4 日
exec
|
10
misaka19000 2019 年 7 月 4 日
每当这种场景我就推荐用 golang 写基础逻辑,然后用 lua 写脚本来处理新的逻辑 hhh
|
11
BBCCBB 2019 年 7 月 4 日
动态 import, 你客户的处理代码加唯一标识,import 的时候按照你这个唯一标识的规则 import 进去执行。
|
12
BBCCBB 2019 年 7 月 4 日
lua 这种可以为每个函数单独设置 environment 的安全些。
|
13
anonymous256 2019 年 7 月 4 日 via Android
采用框架-组件(插件)的架构,你的核心代码是框架,每个客户的代码是组件。不必重新发布,只更新组件就可以了。
|
14
spotfg 2019 年 7 月 5 日
猴子补丁
|
15
Takamine 2019 年 7 月 5 日
干脆自己写一个编译器 2333333333333333333333333333333333333333。
|
17
chenstack 2019 年 7 月 5 日 刚好想知道 Python3.7 的 dataclass 是怎么实现初始化后统一调用__post_init__的,结果看源码发现是拼接 def __init__字符串,然后用 exec 动态生成方法的,和楼主的需求有点联系。
https://github.com/python/cpython/blob/master/Lib/dataclasses.py#L370 |
19
goofool 2019 年 7 月 5 日
抽象方法?
|