2011-03-31 3 views
2

Быстро один надеюсь; мозг пропал.Python Пользовательские числовые типы: Оберните вокруг номера

Возможно ли практическое иметь класс, который представляет собой общее числовое значение (например, float, int и т. Д.), Что при достижении значения < = 0 оно перемещается к os.maxint-value, подобно беззнаковым значение в C?

«Это совершенно безумный» также является приемлемым ответом!

«Разумная» причина использования; конкретную оценку затрат, когда отрицательная «стоимость», хотя теоретически тонкая, практически недействительна и обычно проверяется на каждое значение и перевернута до максимального значения, если < = 0.

Вместо всех этих прекрасных дополнительных сравнений просто приведите стоимость этого поведения.

+0

Для этого может быть какое-то использование, но я действительно сомневаюсь, что это стоит того. – delnan

+0

Может быть, если вы объясните, как люди могут помочь больше? – Daenyth

+1

Вы ищете ctypes? http://docs.python.org/library/ctypes.html#fundamental-data-types – user237419

ответ

3

Найден ответ

Использование типов uint для Numpy для этого.

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

Но вы не отметили 'numpy' в своем вопросе. Недобросовестная? – eat

+4

Возможно, Андрей не использовал 'numpy', пока не узнал, что это решит его проблему. В этом случае он не поместил бы этот тег в свой первоначальный вопрос. – kindall

0

Во-первых, Python вообще не имеет maxint значение, так как это целочисленный тип неограничен. Когда он перейдет sys.maxint, он превращается в тип long. Тем не менее вы можете легко реализовать то, что хотите, написав дескриптор, если хотите, чтобы это было атрибутом класса и свойством, если вы хотите, чтобы это было атрибутом экземпляра.

Смежные вопросы