选择基于参数类型的函数我有一个正在采取的参数任意一组,然后选择正确的功能基础上,类型的参数来处理它们的功能。在python
我的当前方法是使用在所有的用于检查类型的参数的处理功能的装饰,然后通过所有的功能迭代直到一个接受这些参数。
一下这似乎有点哈克给我,作为一个相对较新的Python程序员,我在想,如果有一个更“Python化”的方法来这样做。
如此,目前,我有这样的事情:
def function_router(*args):
for func in functions: #functions is a list of functions
try:
return func(*args)
except TypeError:
pass
#probably raise an exception if no function works
和各功能在“功能”将有一个这样的装饰:
def accepts(*types) :
def my_decorator(func):
def wrapped(*args, **kwargs):
for i in range(len(types)):
if not isinstance(args[i], types[i]):
raise TypeError('Type error, %s not instance of %s, it is %s' %(args[i],types[i], type(args[i])))
return func(*args, **kwargs)
return wrapped
return my_decorator
编辑:哦,天哪,我居然真的喜欢阅读所有的解决方案。我选择的答案是最有效的方法目前我在做什么,但我学到所有的答案的东西,所以谢谢大家的时间。
你能给一些现实世界中,你是如何使用装饰的例子吗? – NPE