但是bar会同时导入foo和boo。foo是否应该自动可用于boo?
不,它不应该:import
与其他任何绑定名称的方式一样,将名称绑定在单个特定的范围内,而不是“在可能需要的所有范围内”。
有办法吗?如前所述,boo.py是为我自动生成的,我想避免在boo.py中添加import foo
有一个非常糟糕的hack-我不想忍受它(我宁愿投入我的精力来使这个完全损坏的代码生成器可以boo.py
修复- 如果它有一个巨大的错误,例如缺少关键的必要导入,它还可以存储什么其他恐怖内容?!),但是,这不是 我的 葬礼… ;-)
有bar.py
开始…:
import foo
import boo
import __builtin__
__builtin__.foo = foo
你所做的标识这样foo
一个“假的,人造的内置名”(唯一一种的名称 从每一个范围,除非在接近范围的名字的其他介入绑定阴影)指的是模块foo
。
推荐使用此过程,只是针对构建的代码生成器中的可怕,明显漏洞的临时解决方法boo.py
。 修复该错误, 以便您可以尽快停用此黑客!