diff --git a/direct/src/showbase/PythonUtil.py b/direct/src/showbase/PythonUtil.py index e5c5199c7a..68460701f0 100644 --- a/direct/src/showbase/PythonUtil.py +++ b/direct/src/showbase/PythonUtil.py @@ -481,3 +481,18 @@ def printProfile(filename=PyUtilProfileDefaultFilename, for sort in sorts: s.sort_stats(sort) s.print_stats(lines) + +class Functor: + def __init__(self, function, *args, **kargs): + assert callable(function), "function should be a callable obj" + self._function = function + self._args = args + self._kargs = kargs + + def __call__(self, *args, **kargs): + """call function""" + _args = list(self._args) + _args.extend(args) + _kargs = self._kargs.copy() + _kargs.update(kargs) + return apply(self._function,_args,_kargs)