Я вижу какое-то странное поведение при попытке конвертировать строку в класс, который я написал, который расширяет 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
, чтобы он больше не имел этого максимума?