按照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__
函数。有没有办法实现这个阶级?
答案 0 :(得分:2)
将模块分配给实例(或类)变量:
if par:
from impl1 import foo10, foo11
else:
from impl2 import foo10, foo11
self.foo10 = foo10
self.foo11 = foo11