2011-03-31 11 views
2

すばらしくうまくいけば、脳は空白になった。Pythonのカスタム数値型:ラップアラウンド数

値が< = 0になると、符号なしと同じようにos.maxint-valueにループする一般的な数値(例:float、intなど)であるクラスを持つことは可能です。 Cの値?

「これは完全に狂っています」も受け入れられる回答です!

「合理的な」使用原因。理論的には問題はないが実質的に無効である負の「コスト」があり、通常各値に対してチェックされ、< = 0の場合にはmaxintにフリップされる特定の「努力」コスト評価。

これらの素敵な追加の比較の代わりに、この値段の費用対効果を与えるだけです。

+0

これにはいくつかの用途があるかもしれませんが、本当にそれは問題の価値があるとは思っていません。 – delnan

+0

ユースケースについて説明すれば、人々はもっと役立つかもしれませんか? – Daenyth

+1

あなたはctypesをお探しですか? http://docs.python.org/library/ctypes.html#fundamental-data-types – user237419

答えて

3

答えを見つけた

Numpyのuintタイプを使用すると、これが機能します。それの整数型が無制限であることから

import numpy.uint32 
valueA=uint32(5) 
valueB=uint32(-5) 
assert valueA < valueB 
+0

あなたはあなたの質問に 'numpy'のタグを付けませんでした。不公平ですか? – eat

+4

Andrewは、問題を解決することが分かるまで、numpyを使用していない可能性があります。その場合、彼は元の質問にタグをつけなかったでしょう。 – kindall

0

まず、Pythonは一般maxint値を持っていません。 sys.maxintを超えるとlongタイプになります。これをインスタンス属性にしたい場合は、これをクラス属性とプロパティにしたい場合は、記述子を書くことで簡単に実装することができます。

関連する問題