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的方法
  • 相关阅读:
    html学习之——标签语义化
    前端学习之---性能优化
    git学习之---如何把一个写好的项目传到GitHub上
    css学习体会之——块级元素,行内元素长宽设置
    部署ingress-nginx
    K8S
    ELK-Trie树
    ELK 日常问题处理
    GFS 日常操作
    MegaCli修复RAID5
  • 原文地址:https://www.cnblogs.com/yingqml/p/6637662.html
Copyright © 2011-2022 走看看