overloading operators for a function object

Chris Rebert clp2 at rebertia.com
Sat Oct 1 01:00:33 EDT 2011


On Fri, Sep 30, 2011 at 9:50 PM, Fletcher Johnson <flt.johnson at gmail.com> wrote:
> Is it possible to overload operators for a function?
>> For instance I would like to do something roughly like...
>> def func_maker():
>  def func(): pass
>>  def __eq__(other):
>    if other == "check":  return True
>    return False
>>  func.__eq__ = __eq__
>  return func
>> newfunc = func_maker()
> newfunc == "check" #true
> newfunc == "no" #false

You can write a callable [wrapper] object to get the same effect:
class SpecialFunction(object):
 def __call__(self, actual, args, go, here):
 return whatever
 def __eq__(self, other):
 return other == "check"
newfunc = SpecialFunction()
newfunc == "check" # => True
newfunc(1, 2, 3, 4) #=> whatever
Cheers,
Chris
--
http://rebertia.com


More information about the Python-list mailing list

AltStyle によって変換されたページ (->オリジナル) /