Commutative object in emulating numbers

iu2 israelu at elbit.co.il
Mon Sep 14 01:19:54 EDT 2009


On Sep 14, 8:16 am, Chris Rebert <c... at rebertia.com> wrote:
> On Sun, Sep 13, 2009 at 9:52 PM, iu2 <isra... at elbit.co.il> wrote:
> > Hi,
>
> > I reached the chapter "Emulating numeric types" in the python
> > documentation and I tried this:
>
> >>>> class A:
> >        def __mul__(self, a):
> >                return 'A' * a
>
> > Now, this works as expected:
> >>>> a = A()
> >>>> a * 3
> > 'AAA'
>
> > But this doesn't (also as expected):
> >>>> 3 * a
>
> > Traceback (most recent call last):
> >  File "<pyshell#45>", line 1, in <module>
> >    3 * a
> > TypeError: unsupported operand type(s) for *: 'int' and 'instance'
>
> > What do I need to do in order to make the two classes, int and A,
> > commutative?
>
> You need to define __rmul__():http://docs.python.org/dev/3.0/reference/datamodel.html#object.__rmul__
>
> Cheers,
> Chris
> --http://blog.rebertia.com- Hide quoted text -
>
> - Show quoted text -

Thanks!



More information about the Python-list mailing list