当试图将一个字符串转换为我写给一个扩展 int
的班级时,我看到了一些怪异的行为。这里有一个简单的程序来证明我的问题:
class MyInt(int):
pass
toInt = 123456789123456789123456789
print "
Converting to int..."
print type(int(toInt))
print "
Converting 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
字符串无法转换为 < code> myInt code >! 我写的 < code> MyInt code > 是如何导致其行为与其基类不同? 在这种情况下, 在 < code> MyInt code > 上似乎有某种最大值; 在 Python 扩展一个内嵌类时, 是否有其它隐含的属性被强制实施? 最后, 有没有办法更改 < code> MyInt code >, 以便它不再有这个最大值?