Grundsätzlich möchte ich Zugriff auf alle Standard-Python-Int-Operatoren haben, zB __and__
und __xor__
etc, speziell wann immer das Ergebnis gedruckt wird Ich möchte es im Hex-Format dargestellt. (Art wie mein Rechner in Hex-Modus versetzen)Unterklasse int, um eine Hex-Darstellung zu erhalten
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))
Im Idealfall sollten BEIDE Zeilen der Ausgabe hexadezimal sein: 0xfacade jedoch die erste ergibt dezimal: 16435934
Irgendwelche Ideen?
Warum nicht einfach die eingebaute Funktion 'hex()' verwenden? http://docs.python.org/library/functions.html#hex –
Das Einfügen von hex() in die zahlreichen verschiedenen Stellen wäre zeitraubend und ungenau. Das Umschalten der Darstellung für alles vom Typ Hex (int) wäre ein einfacher Refactor. Allerdings: Ich denke, man muss alle hexadezimalen dyadischen Operatoren überladen, um auch ein Hex-Ergebnis zurückzugeben (momentan liefern sie immer noch int). Vielleicht gibt es ein "Mixin" zum Überladen von Betreibern in großen Mengen. –