2016-05-08 85 views
1

我是新來的Python,目前正在寫一Fraction類代碼:如何防止屬性與某些值初始化在Python

class Fraction: 
    def __init__(self, numerator, denominator): 
     self.numerator = numerator 
     self.denominator = denominator 

    def __str__(self): 
     return "%s/%s" % (self.numerator, self.denominator) 

    def __mul__(self, other): 
     return "%s/%s" % (self.numerator* other.numerator, self.denominator* other.denominator) 

不過,我想阻止定義與denominator = 0的一小部分,因爲這在數學中是不允許的。我該如何做到這一點? 我曾嘗試將try-except塊放在__init__函數中,並且還有if-else條件,但似乎沒有任何效果。

在此先感謝! 丹尼爾

+2

'__mul__'應該返回'Fraction',而不是字符串的一個新實例,否則你將無法寫,例如, 'fract1 * fract2 * fract3'。 – robyschek

回答

3

可以產生一個異常作爲一個選項

if denominator == 0: 
    raise ValueError("Denominator must not be zero")