3

我有一个带有函数的库,该函数用于返回整数,但现在将返回我定义的“字段”类的对象。我希望这个类的行为尽可能接近整数,以保持与使用这个库的脚本的兼容性,尽管我无法扩展int,因为值需要是可变的。所以我定义了__int__(),等等,希望没有人会注意到函数不再返回常规整数__add__()__radd__()然而,这并没有像我计划的那样发生,因为几个内置函数现在会引发“TypeError:'field' object cannot be mapped as an integer”。(例如hex()。)对此我能做些什么,以便我的课程可以“解释为整数”?

对于任何想知道为什么需要进行这种更改的人,我提到的__getitem__()函数是另一个类(“块”)的函数,它代表这些“字段”的集合。“块”的对象用作评估表达式的locals参数,eval()例如field1 + field2,我希望可以在这些表达式中使用字段的其他属性。

4

1 回答 1

6

添加一个__index__(self)方法并返回包含在您的类中的int(or long) 值field应该使其可以被 Python 的许多内置函数所接受。

于 2013-06-27T13:21:55.403 回答