gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:45:55 25 4
gpt4 key购买 nike

我看了一个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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com