在Python 3中,整数除法或任何包含浮点数的结果都会导致浮点数:>>> from fractions import Fraction>>> f = Fraction(1, 2)>>> f / 2Fraction(1, 4)>>> 2 / fFraction(4, 1)>>> 1 / 2 0.5>>> 2 / 1 2.0>>> f / .15.0>>> f / .22.5>>> .2 / f0.4我想除以返回分数,即得到以下行为:>>> 1 / 2Fraction(1, 2)>>> 2 / 1Fraction(2, 1)我尝试重新定义部门未成功:>>> int.__truediv__ = lambda self, other: Fraction(self) / Fraction(other)Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: can't set attributes of built-in/extension type 'int'我有什么选择?我可以介绍MyFraction衍生自Fraction的类。至少我希望能够定义一个类似dict-like的类X,这样>>> X({'a': 1/3}) == X({'a': Fraction(1, 3)})True如果并且当将有理类型添加到Python中时(请参阅PEP 239),则将整型和整型数进行真除可能应该返回有理。这就避免了真正的整数分割和长时间丢失信息的问题。但是直到那时,为了保持一致性,浮点数是进行真正除法的唯一选择。
添加回答
举报
0/150
提交
取消