"对象不能被解释为整数"

pc3*_*c3e 2 python python-3.x

我有一个库,其函数用于返回一个整数,但现在将返回一个我定义的"字段"类的对象.我希望这个类的行为尽可能接近整数,以保持与使用该库的脚本的兼容性,尽管我无法扩展,int因为值需要是可变的.所以我定义__int__(),__add__(),__radd__()等,希望甚至没有人会注意到的功能不再返回一个普通整数.但是,这并没有像我计划的那样,因为几个内置函数现在会引发"TypeError:'field'对象不能被解释为整数".(例如hex().)有什么我可以做的,所以我的班级可以 "解释为整数"?

对于任何想知道为什么这个改变是必要的人,我提到的__getitem__()函数是另一个类("块")的函数,它代表这些"字段"的集合."块"的对象用作评估表达式的locals参数,并且我希望可以在这些表达式中使用字段的其他属性.eval()field1 + field2

mar*_*eau 5

添加一个__index__(self)方法并返回类中包含的int或者longfield应该使许多Python的内置函数都可以接受.