this answer的第一个示例之后,我将类的实现分为不同的模块,类似于

class MyClass:
    from impl0 import foo00, foo01
    from impl1 import foo10, foo11


我现在想基于仅在实例化时就知道的参数,导入某些方法的两种不同实现中的一种或另一种,例如,

class MyClass:
    from impl0 import foo00, foo01

    def __init__(self, par):
        if par:
            from impl1 import foo10, foo11
        else:
            from alternative_impl1 ipmort foo10, foo11


但是,像在前面的代码段中那样做只能将foo10和foo11的可见性限制为__init__函数。有没有办法做到这一点?

最佳答案

将模块分配给实例(或类)变量:

if par:
   from impl1 import foo10, foo11
else:
   from impl2 import foo10, foo11
self.foo10 = foo10
self.foo11 = foo11

关于python - 有条件地导入python类的片段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49733011/

10-08 22:08