2016-07-25 2 views
1

__index__()メソッドがint以外のPythonオブジェクトの例は何ですか?例えば__index __()メソッドを持つPythonオブジェクトの例?

Hexドキュメントの状態:

xがPythonのintオブジェクトでない場合、それは整数を返す__index__() 方法を定義しなければなりません。

これは自己学習のためのものです。

+1

整数として解釈できるものはどれも。例えば**浮動小数点数ではありません(整数に変換できますが、情報は失われます)。 'bool'は' int'のサブクラスなのでそのメソッドを持っています。そのようなオブジェクトはシーケンスのインデックスとして使用できるという考えがあります。 –

答えて

2

ほとんどは、NumPyまたはSymPyのような数学ライブラリのタイプです。これらのライブラリは、正当な理由で独自の整数型を持ちますが、__index__のおかげで、それらの特殊整数をリストインデックスとして使用するか、通常の整数のようにhexに渡すことができます。

In [9]: import sympy 

In [10]: x = sympy.Integer(1) 

In [11]: x # It looks like a regular 1, but it's not. 
Out[11]: 1 

In [12]: x/2 # This object has special behavior that makes sense for SymPy... 
Out[12]: 1/2 

In [13]: [1, 2, 3][x] # but you can still use it for things like indexing. 
Out[13]: 2 
関連する問題