关于函数返回值的类型检查

时间:2018-03-09 01:08:07

标签: python

最近我想给个人项目一个想法:我想根据函数的返回类型选择不同的功能分支

例如,func()返回A类型的实例,然后选择适应A的分支;返回类型B的实例,并选择适应B的分支。

众所周知,实例的类类型可以使用实例方法简单实现,但如何确定函数的返回值。

1 个答案:

答案 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
相关问题