zoukankan      html  css  js  c++  java
  • return super(ParamValueInline,self).formfield_for_foreignkey(db_field,request,**kwargs)自己返回自己的父类

    作者:刘强胜
    链接:https://www.zhihu.com/question/30361435/answer/83940591
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    super不是指向父类, 而是指向mro中的下一个类, 所以你继承的这个mixin子类, 他会去继承另外一个类, 源码里面是ListView, 所以super返回的是ListView.
    class A(object):
        def __init__(self):
            print(self.__class__.__mro__)
        
        def bark(self):
            print("I'm A")
            super(A, self).bark()
    
    class B(object):
        def bark(self):
            print("I'm B")
    
    
    class C(A, B):
        def bark(self):
            print("I'm C")
            super(C, self).bark()
    
    
    if __name__ == '__main__':
        c = C()
        c.bark()
    
    运行结果:
    (<class '__main__.C'>, <class '__main__.A'>, <class '__main__.B'>, <class 'objec
    t'>)
    I'm C
    I'm A
    I'm B
    

    因为源码里面是
    class IndexView(BaseMixin,ListView):
    所以BaseMixin里面调用的super(BaseMixin, self).get_context_data(**kwargs), 实际上是调用的ListView的方法
  • 相关阅读:
    Backbone学习记录(6)
    Backbone学习记录(5)
    Backbone学习记录(4)
    PHP中抽象类,接口定义
    php和js中json的编码和解码
    jquery中 dom对象与jQuery对象相互转换
    js post跳转
    javascript中的三种弹窗
    出现多个sessid
    php中cookie的操作
  • 原文地址:https://www.cnblogs.com/yingqml/p/6637662.html
Copyright © 2011-2022 走看看