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