有没有可能在不破坏任何东西的情况下做这样的事情:
import some
some_copy = some
print some.version # v1.0
# modify code and reload package
# ...
print some.version # v1.1
print some_copy.version # v1.0
所以我想让两个不同版本的模块/包同时运行(在一个进程中)。
假设您有两个脚本。第一个,像这样调用 some.py
class some(object):
def __init__(self):
self.version = '1.0'
另一个叫做 wcode.py。执行它
import some
some1 = some##.some()
raw_input("Waiting for you to change '1.0' into '1.1'.\nPress ENTER when done.")
reload(some)
some2 = some##.some()
print(some1().version)
print(some2().version)
印刷
1.0
1.0
为什么 ?仅仅是因为导入的定义some
被覆盖。这意味着您可能希望实例化它以保持其方法定义为第一个版本类。如下
import some
some1 = some.some()
raw_input("Waiting for you to change '1.0' into '1.1'.\nPress ENTER when done.")
reload(some)
some2 = some.some()
print(some1.version)
print(some2.version)
印刷
1.0
1.1
因此,答案是NO conditionnally,你想做的事是不可能的内部消除实例化您的第一个版本的类 之前 重新加载模块。如上所述,实际上。请注意,您究竟为什么要这样做,这超出了我的理解。但你可能有充分的理由。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句