我有一个带有用于返回整数的函数的库,但现在将返回我定义的“field”类的对象。我希望这个类的行为尽可能接近整数,以保持与使用此库的脚本的兼容性,尽管我无法扩展int
,因为值必须是可变的。所以我定义了__int__()
,__add__()
,__radd__()
等等,希望没有人会注意到该函数不再返回常规整数。但是,这并没有像我计划的那样,因为几个内置函数现在会引发“TypeError:'field'对象不能被解释为整数”。 (例如hex()
。)有什么我可以做的,所以我的类可以被“解释为整数”吗?
对于想知道为什么需要进行此更改的人,我提到的函数是另一个类(“block”)的__getitem__()
函数,它表示这些“字段”的集合。 “block”的对象用作locals
的{{1}}参数来计算eval()
等表达式,我希望它可以使用这些表达式中字段的其他属性。< / p>
答案 0 :(得分:5)
添加__index__(self)
方法并返回int
类中包含的long
或field
值,应该可以让许多Python内置函数接受。