V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
jakeyfly
V2EX  ›  问与答

Python 中 是的分派 有没有高级有写法 或者现成所库包

  •  
  •   jakeyfly · 2019-08-03 12:50:20 +08:00 · 1090 次点击
    这是一个创建于 1939 天前的主题,其中的信息可能已经有所发展或是发生改变。

    根据传入的不同参数 使用不同的方法

    3 条回复    2019-08-04 00:57:17 +08:00
    Trim21
        1
    Trim21  
       2019-08-03 13:07:14 +08:00 via Android
    functools.singledispatch
    troywinter
        2
    troywinter  
       2019-08-03 20:59:36 +08:00
    #1 正解,曾经我在面试 python 时第一道题就是让他们写个 singledispatch 出来。。。
    shanguo
        3
    shanguo  
       2019-08-04 00:57:17 +08:00
    # python3

    from enum import IntEnum


    class Animal(object):
    @staticmethod
    def cat():
    print('cat')

    @staticmethod
    def dog():
    print('dog')


    # 比如参数是数字 1,2
    # 可以使用枚举

    class StatusEnum(IntEnum):
    1 = cat
    2 = dog


    # 使用

    def main(animal_num):
    func = getattr(Animal, StatusEnum(animal_num).name)
    func()

    main(1)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2678 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 03:28 · PVG 11:28 · LAX 19:28 · JFK 22:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.