我已經搜索了關於轉換類的類似問題,但沒有人真的幫助過我。轉換對象到另一個類
我有一個分數類,並希望如果可能將其簡化爲int。
class Fraction:
def __init__(self, numerator, denominator):
self.numerator = numerator
self.denominator = denominator
self.simplify()
if self.denominator == 1:
# convert self to int of value numerator
我有Fraction類內的功能被創建時,這將簡化的分數(2/6變爲1/3,等)
def simplify(self):
div = gcd(self.numerator, self.denominator)
self.numerator //= div
self.denominator //= div
我目前解決這一問題的是如下:
def convert(fraction):
if fraction.denominator == 1:
return fraction.numerator # int
else:
return fraction # Fraction
f = Fraction(3, 1)
f = convert(f)
我在各種代數表達式中使用這些分數,所以我希望它們儘可能簡單。例如。 1/2 + 1/2 = 1(而不是1/1)
有沒有什麼辦法可以將Fraction對象轉換爲int而無需每次都通過這個外部函數?
感謝
即使這是可能的,我不認爲這會被推薦。我可以看到動態改變一個對象的類型,使代碼難以推理。然而'convert'返回兩種不同類型的事實並不理想。在使用返回值之前,您不需要進行手動類型檢查嗎? – Carcigenicate
你知道python已經提供了一個Fraction類嗎?它可以幫助你:https://docs.python.org/3.6/library/fractions.html – MiguelSR
是的,也認爲動態改變你的對象的類型是不正確的路要走。 – piiipmatz