Is it possible to overload operators for native datatypes?
<p>For example, if I try to do:</p>

<pre><code>a_string + an_int
</code></pre>

<p>... where a_string is type 'str' and an_int is type 'int', or:</p>

<pre><code>an_int + a_string
</code></pre>

<p>There would be a <code>TypeError</code> because there is no implicit conversion of the types. I understand that if I were using my own subclasses of int and string, I would be able to overload the <code>__add__()</code> method in my classes to achieve this. </p>

<p>However, out of curiosity, I would like to know: would it be possible to overload the + operator in the class definitions of <code>int</code> and <code>str</code>, so that <code>__add__(int,str)</code> and <code>__add__(str,int)</code> automatically concatenate them as strings? </p>

<p>If not, what are the reasons why a programmer should not overload the operators for a native datatype? </p>