Inheritance 如何在Python中编程可选的多重继承
如何用两个类实现多重继承。一节课是选修课 我用过一个装饰师:Inheritance 如何在Python中编程可选的多重继承,inheritance,python-2.7,multiple-inheritance,pycharm,Inheritance,Python 2.7,Multiple Inheritance,Pycharm,如何用两个类实现多重继承。一节课是选修课 我用过一个装饰师: def optional_inherit(cls): if _config.GDRIVE_HOOK: from jinjacms2 import drivecms class cls(cls, drivecms.CmsDrive): pass re
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类名 我从以下方面获得灵感:
在Python中,类层次结构是从右到左定义的
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})