python - 子类化 int 以获得十六进制表示

标签 python hex subclassing representation

基本上我想访问所有标准的 python int 运算符,例如 __and____xor__ 等,特别是当结果最终打印出来时,我希望它以十六进制格式表示. (有点像让我的计算器进入十六进制模式)

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

有什么想法吗?

最佳答案

你应该分别定义__repr____str__:

class Hex(int):
  def __repr__(self):
    return "Hex(0x%x)" % self
  def __str__(self):
    return "0x%x" % self

__repr__ 函数应该(如果可能的话)提供可以被eval()用来重建原始对象的 Python 文本。另一方面,__str__ 只能返回对象的人类可读表示。

关于python - 子类化 int 以获得十六进制表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1242589/

相关文章:

python - 网页抓取 - 过滤结果

java - Java 中 Django 的 DecimalField 相当于什么?

python - 查找一个数组中的哪些元素与另一个数组中的任何元素接近的最有效方法是什么?

vim - 二进制编辑

python - 如何使用父类(super class)调用键入 Python mixin?

java - 在 Java 中从十六进制转换为整数

在 C 中从 HEX 颜色转换为 RGB 结构

swift - 从主视图 Controller 中提取@IBOutlets 属性值

ios - Swift:自类型、子类化和重写方法

objective-c - 将父类的实例转换为其子类