В принципе, я хочу иметь доступ ко всем стандартным операторам int python, например __and__
и __xor__
и т. Д., Особенно когда результат окончательно напечатан. Я хочу, чтобы он представлялся в формате Hex. (Вроде как положить мой калькулятор в режим Hex)subclassing int, чтобы получить представление Hex
class Hex(int):
def __repr__(self):
return "0x%x"%self
__str__=__repr__ # this certainly helps with printing
if __name__=="__main__":
print Hex(0x1abe11ed)^Hex(440720179)
print Hex(Hex(0x1abe11ed)^Hex(440720179))
В идеале ОБА строка вывода должна быть шестнадцатеричной: 0xfacade, однако первые один дает десятичное: 16435934
Любые идеи?
Почему бы просто не использовать встроенную функцию 'hex()'? http://docs.python.org/library/functions.html#hex –
Вставка hex() в многочисленные различные подходящие места будет трудоемкой и неточной. Переключение представления для чего-либо типа Hex (int) было бы простым рефактором. Однако: я думаю, что нужно перегрузить все дескрипторы Hex/int, чтобы вернуть результат Hex (в настоящее время они все еще дают int). Может быть, есть «Mixin» для перегрузки операторов навалом. – 2009-08-07 03:12:37