在python中扩展内部类属性

时间:2018-07-14 00:19:14

标签: python django

在我的Django应用程序中,有几个应用程序是通过apps.py文件激活了AppConfig的,并且有一个BaseAppConfig类:

class BaseAppConfig(AppConfig):
    launchpad = None

    def __init__(self, app_name, app_module):
        AppConfig.__init__(self, app_name, app_module)
        self.launchpad = self.Launchpad()

    class Launchpad:
        show = True
        icon = "fa fa-cogs"

我在以下自定义应用中使用此BaseAppConfig

class CustomerConfig(BaseAppConfig):
    name = 'customer'

    class Launchpad:
        icon = "fa fa-book"

,当我尝试使用show到达CustomerConfig的{​​{1}}属性时,它将返回customer_config.launchpad.show

Python像new一样覆盖所有内部类。

如何仅扩展内部类的属性?

1 个答案:

答案 0 :(得分:1)

这是因为您要覆盖Launchpad类。因此,它无法退回并根据需要解析为BaseAppConfig

您需要将其更改为该类,以使其起作用

class CustomerConfig(BaseAppConfig):
     name = 'customer'

    class Launchpad(BaseAppConfig.Launchpad):
        icon = "fa fa-book"

这样,它可以引用基类Launchpad实例。