我创建了一个带有可选部分/类的 Python 包。当我使用这个可选部分 (OptClass) 时,我必须更改类 (ExampleClass) 的继承。现在我使用这段代码:
if use_option :
_opt_class = __import__('package.my_module', globals(), locals(), ['OptClass']).OptClass
else :
_opt_class = object # do not use the optional class
....
class ExampleClass(base_module.BaseHandler, _opt_class):
....
是否有另一种 Pythonic 方式来解决这个问题?例如使用动态继承或延迟加载,或者......?
请您参考如下方法:
我可能会使用类装饰器:
def optional_inherit(cls):
if use_option:
from package.my_module import OptClass
class ExampleClassWithOptClass(cls, OptClass):
pass
return ExampleClassWithOptClass
else:
return cls
...
@optional_inherit
class ExampleClass(base_module.BaseHandler):
...
如果您经常这样做,您可以编写 optional_inherit 来接受参数;在这种情况下,@optional_inherit(use_option, 'package.mymodule.OptClass')。
