在Python中灵活地按条件导入类

在Python中灵活地按条件导入类,python,Python,我在用Python继承类时遇到了一个问题 我有3个包含测试用例的类,一个全局变量称为my\u condition global my_condition = 1 class mdl_test_case: def test_mdl_1(): print "Testing MDL" class feac_test_case: def test_feac_1(): print "Testing FEAC" class all_test_case()

我在用Python继承类时遇到了一个问题

我有3个包含测试用例的类,一个全局变量称为
my\u condition

global my_condition = 1

class mdl_test_case:
    def test_mdl_1():
        print "Testing MDL"

class feac_test_case:
    def test_feac_1():
        print "Testing FEAC"

class all_test_case():
    def test_common_1():
        print "Testing Common"
现在在类
all_test_case
中,我希望继承类
mdl_test_case
feac_test_case
,具体取决于变量
my_condition
的值

详情如下

  • 如果我设置
    my_condition=1
    并调用类
    all_test\u case
    。我希望继承类
    mdl\u测试案例
  • 反之亦然,如果我设置
    my_condition=2
    并调用类
    all_test\u case
    。我希望继承类
    feac\u测试案例
注意事项:

  • 每次调用类
    all\u test\u case

您可以按如下方式添加updateClass函数:

class mdl_test_case:
    def test_mdl_1(self):
        print "Testing MDL"

class feac_test_case:
    def test_feac_1(self):
        print "Testing FEAC"

def updateClass(my_condition):
    global all_test_case
    if my_condition == 1:
        class all_test_case(mdl_test_case):
            def test_common_1(self):
                print "Testing Common"
    elif my_condition == 2:
        class all_test_case(feac_test_case):
            def test_common_1(self):
                print "Testing Common"
现在,
all_test_case
将根据
my_条件

updateClass(1)
ss = all_test_case()
ss.test_mdl_1()

updateClass(2)
ss = all_test_case()
ss.test_feac_1()  

# prints 
# Testing MDL
# Testing FEAC

为什么不使用
unittest
框架和?这样你就不必动态地改变继承树(这真的是不需要的),如果我这样做的话,由于过滤和跳过,它的运行速度会很慢。我有大约300个类和20000个测试用例,所以过滤和跳过对我来说不是一个好的解决方案。谢谢你的建议,但是我有很多变量,比如“我的条件”和很多类。所以按照你的建议去做会使我们的代码变得非常复杂和失控。也许我需要一个更好的解决方案来解决这个问题。