Найти - Пользователи
Полная версия: частичная специализация
Начало » Python для экспертов » частичная специализация
1
pupkin2
привет.

интересует, каким образом можно специализировать функций типом и значением аргумента.
т.е., имеем такую функцию:
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"
теперь, при вызове “foo(some_val, 1)” должна вызываться специализация для 1, при 2 - для 2.
такое возможно?

и сопутствующий вопрос: возможно ли проделать тоже самое но не для значений, а для типов?


спасибо.
Андрей Светлов
http://pypi.python.org/pypi/PEAK-Rules

Но это очень сильное колдунство.
o7412369815963
Штатно вроде никак, нужна обертка/декоратор. вот пример, в зависимости от типа отрабатывает нужная функция:
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')
pupkin2
Андрей Светлов, o7412369815963, значит все же такое возможно.
спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB