Commutative object in emulating numbers

iu2 israelu at
Mon Sep 14 06:52:26 CEST 2009


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

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

More information about the Python-list mailing list