super & self

在一本过时的django里看到一段代码:

class PublishedManager(models.Manager):
    def get_queryset(self): 
        return super(PublishedManager, self).get_queryset().filter(status='published')

心想这写的这是啥啊,难道是递归?太复杂了!
认真学习之后才知道,super有两个参数,第一个是必要参数,类型是一个类(type),第二个是可选参数,类型是一个第一个参数的子类或者子类的实例。第二个参数的作用,是为第一个参数提供 MRO官方文档是这样的:
image

在python3中,在直接按自身mro调用父类方法的时候,可以不写参数。

posted @ 2024-05-06 12:28  etfolin  阅读(3)  评论(0编辑  收藏  举报