通过字典调用函数列表(替代 if...elif....elif....else调用分支)

3 阅读1分钟

通过字典调用函数列表(替代 if...elif....elif....else调用分支)

class Animal:
    def __init__(self,name,age):
        self.name=name

    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        print(f"{self.name} 汪")

class Cat(Animal):
    def speak(self):
        print(f"{self.name} 喵")

def main():
    mydog = Dog("旺财",4)
    mycat = Cat("果果",5)
    animals= [mydog, mycat]
    for a in animals:
        a.speak()

main()
  • 可以改写为:
func:dict={
    0:Dog("旺旺",1),
    1:Cat("猫猫",2)
}

ver=1
an = func.get(ver,Dog("getdog",1))
an.speak()

替代 if...elif....elif....else

def callfuc(ver:int):
    if ver==0:
        first()
    elif ver==1:
        second()
    elif ver==2:
        third()
    else:
        default()

callfuc(0)
callfuc(1)
callfuc(2)

#可以改写为:
funcdicts:dict={
    0:first(),
    1:second(),
    2:third()
}

ver=1
fuc = funcdicts.get(ver,default)
fuc()