有条件地导入python类的片段

时间:2018-04-09 12:29:39

标签: python class python-module

按照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__函数。有没有办法实现这个阶级?

1 个答案:

答案 0 :(得分:2)

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

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