代码之家  ›  专栏  ›  技术社区  ›  Ekin Ertaç

在python中扩展内部类属性

  •  1
  • Ekin Ertaç  · 技术社区  · 6 年前

    在我的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"
    

    我用这个 基本应用配置 在我的自定义应用程序中,例如:

    class CustomerConfig(BaseAppConfig):
        name = 'customer'
    
        class Launchpad:
            icon = "fa fa-book"
    

    当我试图接近 show 属性 CustomerConfig 使用 customer_config.launchpad.show 它又回来了 AttributeError 是的。

    python像new一样重写所有内部类。

    如何实现对内部类属性的扩展?

    1 回复  |  直到 6 年前
        1
  •  1
  •   scharette    6 年前

    这是因为你正在重写 Launchpad 上课。因此,它不能退缩并决心 BaseAppConfig 随你所愿。

    你得把你的课改成这样才能成功,

    class CustomerConfig(BaseAppConfig):
         name = 'customer'
    
        class Launchpad(BaseAppConfig.Launchpad):
            icon = "fa fa-book"
    

    这样它就有了对基类的引用 发射台 实例。