Py学习  »  问与答

请教一个关于super()的问题

易冷天涯 • 10 年前 • 7542 次点击  
class BaseMixin(object):

    def get_context_data(self, *args, **kwargs):
        context = super(BaseMixin, self).get_context_data(**kwargs)
        try:
            context['categories'] = Category.available_list()
            context['widgets'] = Widget.available_list()
            context['recently_posts'] = Post.get_recently_posts(RECENTLY_NUM)
            context['hot_posts'] = Post.get_hots_posts(HOT_NUM)
            context['pages'] = Page.objects.filter(status=0)
            context['online_num'] = len(cache.get('online_ips'))
        except Exception as e:
            logger.exception(u'加载基本信息出错[%s]!', e)

        return context

学习别人的代码,发现这么一个class。

别的地方出现的super(BaseMixin, self).get_context_data(**kwargs)是在继承这个class。那么这个class自己里面这一行

        context = super(BaseMixin, self).get_context_data(**kwargs)

是什么意思?自己是自己的父类?新手感觉有点乱了。

后面又return context。return的又是什么呢?

谢谢大家!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/269
 
7542 次点击  
文章 [ 3 ]  |  最新文章 10 年前
JackyXiong
Reply   •   1 楼
JackyXiong    10 年前

那请问context['categories'] = Category.available_list() 的含义是什么呢?不明白available_list()这个东西。

易冷天涯
Reply   •   2 楼
易冷天涯    10 年前

@danpy5

这里的BaseMixin直接是BaseMixin(object),那个例子是FooChlid(FooParent)。FooChild继承了自己的父类FooParent里的方法,这个好理解。但是难道BaseMixin继承了object里面的方法?

danpy5
Reply   •   3 楼
danpy5    10 年前

是自己调用自己的父类,具体看一下http://www.360doc.com/content/13/0306/15/9934052_269664772.shtml