 <i>instead of</i>
      <code>p1 *= p2</code><i>, it successfully executes my code. What's
      wrong with me?</i>

      <p><b>A:</b> There's nothing wrong with you. This is a bug in Python
      2.2. You can see the same effect in Pure Python (you can learn a lot
      about what's happening in Boost.Python by playing with new-style
      classes in Pure Python).</p>
<pre>
&gt;&gt;&gt; class X(object):
...     def __imul__(self, x):
...         print 'imul'
...
&gt;&gt;&gt; x = X()
&gt;&gt;&gt; x *= 1
<