Python中父类是否可以访问其他父类的变量?

2024-09-30 06:11:51 发布

您现在位置:Python中文网/ 问答频道 /正文

在阅读Django Unrelease一书时,我遇到了以下代码片段。我想知道为什么NewsLinkGetObjectMixin可以访问类变量startup\u slug\u url\u kwarg,它是在另一个基类StartupContextMixin中定义的?你知道吗

class NewsLinkGetObjectMixin():

    def get_object(self, queryset=None):
        startup_slug = self.kwargs.get(
            self.startup_slug_url_kwarg)
        newslink_slug = self.kwargs.get(
            self.slug_url_kwarg)
        return get_object_or_404(
            NewsLink,
            slug__iexact=newslink_slug,
            startup__slug__iexact=startup_slug)

class StartupContextMixin():
    startup_slug_url_kwarg = 'startup_slug'
    startup_context_object_name = 'startup'

    def get_context_data(self, **kwargs):
        startup_slug = self.kwargs.get(
            self.startup_slug_url_kwarg)
        startup = get_object_or_404(
            Startup, slug__iexact=startup_slug)
        context = {
            self.startup_context_object_name:
                startup,
        }
        context.update(kwargs)
        return super().get_context_data(**context)

class NewsLinkCreate(NewsLinkGetObjectMixin, StartupContextMixin, CreateView):

Tags: selfurlgetobjectdefcontextkwargsclass
1条回答
网友
1楼 · 发布于 2024-09-30 06:11:51

当您从几个基类继承一个类时,继承的类可以访问基类的所有属性。你知道吗

NewsLinkCreate继承自NewsLinkGetObjectMixinStartupContextMixin。因此,当您在NewsLinkCreate实例上调用方法get_object时,它可以从NewsLinkGetObjectMixinStartupContextMixin访问变量,因为NewsLinkCreate是从这两个类继承的。两个mixin的所有属性都被添加到类NewsLinkCreate。你知道吗

相关问题 更多 >

    热门问题