Python:导入模块而不执行脚本

标签 python import

我看了一个similar问题,但它并没有真正回答我的问题。假设我有以下代码(过于简化以仅突出显示我的问题)。

class A:
    def __init__(self,x):
        self.val = x

a = A(4)
print a.val

此代码驻留在文件someones_class.py中。我现在想在我的程序中导入并使用类 A不修改 someones_class.py。如果我执行 from somemes_class import A,python 仍会执行文件中的脚本行。

问题:有没有办法只导入类A而不执行最后两行?

我知道 if __name__ == '__main__' 的事情,但我没有修改 someones_class.py 文件的选项,因为它仅在我的程序启动后获得正在执行。

最佳答案

此答案只是为了证明它可以完成,但显然需要更好的解决方案来确保您包含要包含的类。

>>> code = ast.parse(open("someones_class.py").read())
>>> code.body.pop(1)
<_ast.Assign object at 0x108c82450>
>>> code.body.pop(1)
<_ast.Print object at 0x108c82590>
>>> eval(compile(code, '', 'exec'))
>>> test = A(4)
>>> test
<__main__.A instance at 0x108c7df80>

您可以检查 code 主体中想要包含的元素并删除其余元素。

注意:这是一个巨大的黑客攻击。

关于Python:导入模块而不执行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16177238/

相关文章:

java - 无法在 Eclipse 中从 Nvidia Tegra Developer Pack 导入 o​​rg.opencv[...]

python - 我可以安全删除 "/anaconda3/pkgs"中的文件吗?

python - 试图在二叉树中查找节点

python - Django:在最大外键值上选择不同的值

python - 为 python 目录中的每个模块调用特定函数

python-3.x - 在 Python 3 中从同一包内和包外导入模块

javascript - React Native 无法解决错误

javascript - 如何更改这些模块的这些 require 语句以改为使用 import 语句?

python - 如何找到一个很长的字符串的所有唯一子串?

python - 来自两个不同数据帧的平均值