Skip to main content
 首页 » 编程设计

python之延迟加载/配置要继承的类

2025年05月04日13lyhabc

我创建了一个带有可选部分/类的 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')。