Skip to main content
 首页 » 编程设计

python之以特定顺序调用函数列表

2025年05月04日20shanyou

我宁愿这样做

class A: 
    def __init__(self): 
        self._TESTS = { 
            'val1': self.test1, 
            #... 
            'val10': self.test10 
        } 
    def test(self, x): 
        for v, f in self._TESTS.items(): 
            if f(x): 
                return v 
        return None 

在这之上

class A: 
    def test(self, x): 
        if self.test1(x): 
            return 'val1' 
        #... 
        if self.test10(x): 
            return 'val10' 
        return None 

但是我需要按特定顺序调用 test* 方法。你会怎么做?

我可以使用 collections.OrderedDict,但实际上我根本不用字典,因为我总是一次调用所有测试。那么,也许是一个元组列表?

请您参考如下方法:

是的,使用 tuples 列表,保留顺序,不需要 dict,因为不需要查找。循环略有不同,不再是.items()而是直接解包:

class A: 
    def __init__(self): 
        self._TESTS = [ 
            ('val1', self.test1), 
            #... 
            ('val10', self.test10) 
        ] 
    def test(self, x): 
        for v, f in self._TESTS: 
            if f(x): 
                return v 
        return None