在Python 3中,整數(shù)除法或任何包含浮點(diǎn)數(shù)的結(jié)果都會(huì)導(dǎo)致浮點(diǎn)數(shù):>>> 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我想除以返回分?jǐn)?shù),即得到以下行為:>>> 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的類。至少我希望能夠定義一個(gè)類似dict-like的類X,這樣>>> X({'a': 1/3}) == X({'a': Fraction(1, 3)})True如果并且當(dāng)將有理類型添加到Python中時(shí)(請(qǐng)參閱PEP 239),則將整型和整型數(shù)進(jìn)行真除可能應(yīng)該返回有理。這就避免了真正的整數(shù)分割和長時(shí)間丟失信息的問題。但是直到那時(shí),為了保持一致性,浮點(diǎn)數(shù)是進(jìn)行真正除法的唯一選擇。
2 回答

慕尼黑5688855
TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊
您可能不應(yīng)該這樣做,但是您可以使用“禁果”模塊對(duì)內(nèi)置類型進(jìn)行猴子修補(bǔ)。
添加回答
舉報(bào)
0/150
提交
取消