最近我想给个人项目一个想法:我想根据函数的返回类型选择不同的功能分支
例如,func()返回A类型的实例,然后选择适应A的分支;返回类型B的实例,并选择适应B的分支。
众所周知,实例的类类型可以使用实例方法简单实现,但如何确定函数的返回值。
答案 0 :(得分:0)
您可以使用functools.singledispatch
执行此操作(Python 3.4 +)
In[2]: from functools import singledispatch
...:
...:
...: class A:
...: pass
...:
...:
...: class B:
...: pass
...:
...:
...: def func(obj):
...: return branches(obj)
...:
...:
...: @singledispatch
...: def branches(arg):
...: print('Not A or B: {}'.format(arg))
...:
...:
...: @branches.register(A)
...: def _(arg):
...: print('Handle A objects')
...:
...:
...: @branches.register(B)
...: def _(arg):
...: print('Handle B objects')
...:
In[3]: func(A())
Handle A objects
In[4]: func(B())
Handle B objects
In[5]: func('Something Else')
Not A or B: Something Else