# -*- coding:utf-8 -*-
class functor(object):
def __init__(self, func, index=0, *args, **kwargs):
self._func = func
self._index = index
self._args = args
self._kwargs = kwargs
def __call__(self, *args, **kwargs):
args = args[:self._index] + self._args + args[self._index:]
kwargs = kwargs.copy()
kwargs.update(self._kwargs)
return self._func(*args, **kwargs)
def bind(func, index=0, *args, **kwargs):
return functor(func, index, *args, **kwargs)