请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

自定义UA中间件类__init__方法下super方法是否有效

老师,这个类的父类是object,所以super(RandomUserAgentMiddleware)._init_()方法在这起到了什么作用呢?
图片描述

正在回答

1回答

这个属于python的基础知识,super方法准确的说不是调用父类,而是沿着mro的顺序去查找下一个类的方法,因为mro算法具体的内容比较多。你可以百度一下python的mro算法

0 回复 有任何疑惑可以回复我~
  • 提问者 慕丝146315 #1
    我大概知道了,我们可以通过类的mro方法来查看MRO列表。
    如果我们直接查看RandomUserAgentMiddleware.mro(), 那么MRO列表只有两个元素,一个是它本身,一个是object类,这个时候super方法其实是没有作用的。
    但是如果RandomUserAgentMiddleware是某个类(假设类A)多个父类中的一个,那么当类A对象调用到RandomUserAgentMiddleware中的__init__方法时,此时只要不是处于MRO列表的倒数第二个位置(到数第一是object类),super方法就会根据MRO列表去调用下一个元素中的__init__方法。
    回复 有任何疑惑可以回复我~ 2019-10-08 09:36:57
  • bobby 回复 提问者 慕丝146315 #2
    是的,
    回复 有任何疑惑可以回复我~ 2019-10-09 11:26:08
  • 提问者 慕丝146315 #3
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-10-10 19:57:26
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信