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

2019-08-03 12:50:20 +08:00
 jakeyfly

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

1088 次点击
所在节点    问与答
3 条回复
Trim21
2019-08-03 13:07:14 +08:00
functools.singledispatch
troywinter
2019-08-03 20:59:36 +08:00
#1 正解,曾经我在面试 python 时第一道题就是让他们写个 singledispatch 出来。。。
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)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/588746

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX