“对象不能被解释为整数”

时间:2013-06-27 12:15:50

标签: python python-3.x

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

对于想知道为什么需要进行此更改的人,我提到的函数是另一个类(“block”)的__getitem__()函数,它表示这些“字段”的集合。 “block”的对象用作locals的{​​{1}}参数来计算eval()等表达式,我希望它可以使用这些表达式中字段的其他属性。< / p>

1 个答案:

答案 0 :(得分:5)

添加__index__(self)方法并返回int类中包含的longfield值,应该可以让许多Python内置函数接受。