继承的父类的方法,我想修改部分逻辑,有什么好的方法吗

2019-01-29 16:20:20 +08:00
 warcraft1236
如题

我自己的下载 pipeline,继承了 scrapy 的 FilesPipeline 类,我现在想修改 media_to_download 这个方法

其实就是想加一点 log,逻辑上有一点小小的修改,大体上的逻辑还是 scrapy 中的逻辑

我只会复制粘贴 FilesPipeline 中的方法代码过来,然后自己修改

有没有什么比较好的方法能做到加一点 log 这个要求吗?
2337 次点击
所在节点    Python
13 条回复
mainlong
2019-01-29 16:22:21 +08:00
装饰器?
Faiz555
2019-01-29 16:27:13 +08:00
super()?
warcraft1236
2019-01-29 17:43:50 +08:00
@mainlong 没懂
wwg1994
2019-01-29 17:47:48 +08:00
装饰器不可行吧,不能修改原函数内部的逻辑,加日志倒是莫得问题。
lecion
2019-01-29 17:49:23 +08:00
@wwg1994 日志也只能前后插桩,看楼主的意思是想在过程中也加日志
dendi009
2019-01-29 17:52:18 +08:00
只想加 log 用装饰器就行 @decorator 就能满足, 逻辑小改动 装饰器应该也能满足, 取决于改什么逻辑 。 实在不行继承父类, 重写类方法 最直接。
wwg1994
2019-01-29 17:53:17 +08:00
@lecion 那就莫得法了,ctrl+c,ctrl+v,重写吧😀
pabupa
2019-01-29 17:54:53 +08:00
改他的源码呀
pabupa
2019-01-29 17:55:59 +08:00
@pabupa 又不需要编译。
warcraft1236
2019-01-29 18:39:36 +08:00
@dendi009 重写岂不是得复制粘贴代码之后,再修改,他的方法有很多 import,我懒得挨个 import 了
smdbh
2019-01-29 18:54:32 +08:00
不可能。
重写函数。
zwzmzd
2019-01-29 23:44:13 +08:00
看一看 monkey patching ?主要原理就是把原有的函数对象动态换掉
warcraft1236
2019-01-30 10:02:55 +08:00
@zwzmzd 学习了,我去看看

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/531629

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX