我有一个库,其中的函数曾经返回一个整数,但现在将返回我定义的“field”类的对象。我希望这个类的行为尽可能接近整数,以保持与使用此库的脚本的兼容性,尽管我不能扩展int类型,因为值需要是可变的。所以我定义了__int__(),__add__(),__radd__()等方法,希望没有人会注意到函数不再返回常规整数。然而,这并没有像我计划的那样进行,因为几个内置函数现在会引发“TypeError: 'field' object cannot be interpreted as an integer”错误(例如hex())。是否有什么办法可以解决这个问题,使我的类可以被“解释为整数”?
对于任何想知道为什么需要这种改变的人,我提到的函数是另一个类(“block”)的__getitem__()函数,该类表示这些“fields”的集合。 "block"对象用作eval()的locals参数来评估诸如field1 + field2之类的表达式,我希望能够在这些表达式中使用字段的其他属性。
对于任何想知道为什么需要这种改变的人,我提到的函数是另一个类(“block”)的__getitem__()函数,该类表示这些“fields”的集合。 "block"对象用作eval()的locals参数来评估诸如field1 + field2之类的表达式,我希望能够在这些表达式中使用字段的其他属性。
field
类中添加一个__index__(self)
方法。 - martineauField
和Block
。 - martineau