2016-07-23 4 views
1

私のquestion from earlier today(これはすばらしく答えられており、皆様の洞察に感謝しています)、私はextended that small classを使っています。浮動小数点型の__float__を使用してください

には、すべてのエントリを浮動小数点に変換する方法がわかりません。list comprehensionsはありません。

例えば、今の私には、以下があります。

def __float__(self): 
    return operalist(float(i) for i in self) 

をしかし、私は次の一連のコマンドを呼び出すとき:

>>> from operalist import operalist 
>>> X = operalist(range(1, 11)) 
>>> X 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
>>> float(X) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: __float__ returned non-float (type operalist) 

私はむしろ、見るであろうことは、我々がで取得したいものですそれがないので、私は、__float__メソッドを追加するにはどうすればよい

>>> [float(i) for i in X] 
[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0] 

:リスト内包を使用してリストにネイティブではないようですか?それが良い考えでない限り。

+0

例外として、 '__float__'は単一の浮動小数点値を返すと予想され、何か他のことは受け入れられないことが示唆されています。 [the docs](https://docs.python.org/3/reference/datamodel.html?highlight=__float__#object.__complex__)を参照してください。 – Blckknght

+0

あなたの要点と(まだ空の) 'multioperalist'クラスを見てみましょう:私はあなたの気持ちを再現しようとしていないと思っていますが、これを運動としてやっています。 – Evert

+0

@Evert私は心配しないでください。どのようにすべてのものが動作するかを理解することです – bjd2385

答えて

1

残念ながら、あなたはできません。私は、正確なこの上の文言が、the documentation statesを見つけることができません:組み込み関数の複合体を実現するために呼び出され

()、int型()、フロート() とラウンド()。適切な型の値を返さなければなりません。

Iはそのよう__float__()float()ので、floatを返すべきであることを読み取る。

[R] ETURN [s]は数字または文字列xから構成された浮動小数点数。比較のために


、numpyのも、これを実行しません。その代わりに、<type>に変換するndarrayにメソッドastype(<type>)があります。
これは確かにこれができないことを私に確認します。

+0

さて、これは理にかなっています。さらに、記録のために、私は間違いなくNumPy LOLを再作成しようとしていません。それはただ涼しいです、それ以上 – bjd2385

関連する問題