文字列を私が書いた拡張するクラスに変換しようとすると、奇妙な動作が見られます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
そして最後に、この最大値をもう持たないように変更する方法はありますか?