Hi,

When using a decorator on an arithmetic operator such as __mod__ in a cdef
class, the method __mod__ is properly replaced, but the corresponding
operator doesn't seem to be. See below for an example.

Am I doing something wrong, or is this indeed not supported?

It would be nice if cython could raise a warning or error in this situation.
(Or even better if it would override the operator, but I don't know how
feasible that would be given python's special treatment of these arithmetic
slots.)

Thanks,
Willem Jan



class DEC:
  def __init__(self, f):
    self._f = f
  def __call__(self, x):
    print "DEC.__call__ called"

cdef class X:
  @DEC
  def __mod__(self, x):
    print "X.__mod__ called"

class Y:
  @DEC
  def __mod__(self, x):
    print "Y.__mod__ called"



> a = X()
> b = Y()
> a % 2
X.__mod__ called
> b % 2
DEC.__call__ called
> a.__mod__(2)
DEC.__call__ called
> b.__mod__(2)
DEC.__call__ called

_______________________________________________
Cython-dev mailing list
Cython-dev@codespeak.net
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to