Commutative object in emulating numbers

iu2 israelu at elbit.co.il
Mon Sep 14 00:52:26 EDT 2009


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?
(In the same way that string and int are commutative over "*")
Thanks



More information about the Python-list mailing list