python运⾏时修改代码_python运⾏时修改代码的⽅法——
monkeypatch
monkey patch (猴⼦补丁)
⽤来在运⾏时动态修改已有的代码,⽽不需要修改原始代码。
简单的monkey patch 实现:
#coding=utf-8
def originalFunc():
print 'this is original function!'
def modifiedFunc():
modifiedFunc=1
print 'this is modified function!'
def main():
originalFunc()
if __name__=='__main__':
originalFunc=modifiedFunc
main()
python中所有的东西都是object,包括基本类型。查看⼀个object的所有属性的⽅法是:dir(obj)
函数在python中可以像使⽤变量⼀样对它进⾏赋值等操作。
查看属性的⽅法:
print locals()
print globals()
当我们import⼀个module时,python会做以下⼏件事情
·
导⼊⼀个module
·将module对象加⼊到dules,后续对该module的导⼊将直接从该dict中获得
·将module对象加⼊到globals dict中
python新手代码错了应该怎么改当我们引⽤⼀个模块时,将会从globals中查。这⾥如果要替换掉⼀个标准模块,我们得做以下两件事情
1.将我们⾃⼰的module加⼊到dules中,替换掉原有的模块。如果被替换模块还没加载,那么我们得先对其进⾏加载,否则第⼀次加载时,还会加载标准模块。(这⾥有⼀个import hook可以⽤,不过这需要我们⾃⼰实现该hook,可能也可以使⽤该⽅法hook module import)
2.如果被替换模块引⽤了其他模块,那么我们也需要进⾏替换,但是这⾥我们可以修改globals dict,将我们的module加⼊到globals以hook这些被引⽤的模块。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论