gpt4 book ai didi

Python:当我修改导入的类时会发生什么?

转载 作者:行者123 更新时间:2023-11-30 22:27:21 26 4
gpt4 key购买 nike

我编写了以下代码来修改一个类的方法的行为

import mymodule
mymodule.MyClass.f = mydecorator(mymodule.MyClass.f)
mymodule.MyClass.f(x) # call the modified function

这适用于我的目的,但是:我到底修改了什么? mymodule.MyClass 是当前模块中原始类的副本吗?它会以任何方式影响原来的类(class)吗?导入具体是如何进行的?

最佳答案

当您修改导入的模块时,您会修改缓存的实例。因此,您的更改将影响导入修改后的模块的所有其他模块。

https://docs.python.org/3/reference/import.html#the-module-cache

更新:

你可以测试一下。

change_sys.py:

import sys

# Let's change a module
sys.t = 3

main.py:

# the order of imported modules doesn't meter
# they both use cached sys
import sys
import change_sys

print(sys.t)

python ./main.py 的输出:

3

关于Python:当我修改导入的类时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46954642/

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