尝试将字符串转换为我编写的扩展类时,我看到了一些奇怪的行为int
。这是一个演示我的问题的简单程序:
class MyInt(int):
pass
toInt = '123456789123456789123456789'
print "\nConverting to int..."
print type(int(toInt))
print "\nConverting to MyInt..."
print type(MyInt(toInt))
由于MyInt
是空的,我希望它的行为与int
. 相反,这是我从上面的程序中得到的输出:
Converting to int...
<type 'long'>
Converting to MyInt...
Traceback (most recent call last):
File "int.py", line 9, in <module>
print type(MyInt(toInt))
OverflowError: long int too large to convert to int
字符串无法转换为MyInt
! 我写的方式MyInt
导致它的行为与它的基类不同呢?在这种情况下,似乎有某种最大值MyInt
; 当在 Python 中扩展内置类时,是否还有其他像这样隐式强加的属性?最后,有没有办法改变MyInt
它,使它不再有这个最大值?