我有一个带有函数的库,该函数用于返回整数,但现在将返回我定义的“字段”类的对象。我希望这个类的行为尽可能接近整数,以保持与使用这个库的脚本的兼容性,尽管我无法扩展int
,因为值需要是可变的。所以我定义了__int__()
,等等,希望没有人会注意到函数不再返回常规整数__add__()
。__radd__()
然而,这并没有像我计划的那样发生,因为几个内置函数现在会引发“TypeError:'field' object cannot be mapped as an integer”。(例如hex()
。)对此我能做些什么,以便我的课程可以“解释为整数”?
对于任何想知道为什么需要进行这种更改的人,我提到的__getitem__()
函数是另一个类(“块”)的函数,它代表这些“字段”的集合。“块”的对象用作评估表达式的locals
参数,eval()
例如field1 + field2
,我希望可以在这些表达式中使用字段的其他属性。