【问题标题】:How to program optional multiple inheritance in Python如何在 Python 中编写可选的多重继承
【发布时间】:2013-12-05 00:26:08
【问题描述】:

如何用两个类实现多重继承。一门课是可选的。

我用了一个装饰器:

def optional_inherit(cls):                                                         

    if _config.GDRIVE_HOOK:
        from jinjacms2 import drivecms

        class cls(cls, drivecms.CmsDrive):
            pass
    return cls

@optional_inherit
class JinjaCMS(cmsbase.CmsHandler):

    def get(self):
        ...

但是?还有其他方法吗? 装饰器中的类名“cls”报告:cls 不是允许的 PEP-8 类名。

【问题讨论】:

    标签: inheritance python-2.7 multiple-inheritance pycharm


    【解决方案1】:

    我在this great article找到了灵感:

    def jinjacms_get(self):         # member function for JinjaCMS class
        ....
    
    if config.GDRIVE_HOOK:          #optional multiple inheritance
        from jinjacms import drivecms
        JinjaCMS = type(str('JinjaCMS'), (drivecms.CmsDrive, cmsbase.CmsHandler), {'get': jinjacms_get})
    else:
        JinjaCMS = type(str('JinjaCMS'), (cmsbase.CmsHandler, ), {'get': jinjacms_get})
    

    在 Python 中,类层次结构是从右到左定义的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-04
      • 2021-05-12
      • 2020-12-18
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      • 2015-05-02
      相关资源
      最近更新 更多