作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了以下代码来修改一个类的方法的行为
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/
我创建了一个分支来开发新功能。由于这个新功能完全是作为一个新项目开发的,唯一可能的冲突来源是解决方案文件。 随着功能的开发,主分支更新了几次。当我完成开发和测试时,我做了: git checkout
我是一名优秀的程序员,十分优秀!