Форум сайта python.su
привет.
интересует, каким образом можно специализировать функций типом и значением аргумента.
т.е., имеем такую функцию:
def foo(arg1, arg2):
print arg1, arg2
def foo(arg1, arg2=1):
print "specialization for 1"
def foo(arg1, arg2=2):
print "specialization for 2"
Офлайн
http://pypi.python.org/pypi/PEAK-Rules
Но это очень сильное колдунство.
Офлайн
Штатно вроде никак, нужна обертка/декоратор. вот пример, в зависимости от типа отрабатывает нужная функция:
def foo(arg1, arg2):
d = { int:lambda a,b:"specialization for int, %d:%d"%(a,b), str:lambda a,b:"specialization for int, %s:%s"%(a,b) }
return d[type(arg2)](arg1, arg2)
print foo(1,1)
print foo('str','ing')
Офлайн
Андрей Светлов, o7412369815963, значит все же такое возможно.
спасибо.
Офлайн