2016-05-08 16 views
1

ich Python neu bin, die derzeit einen Code für einen Bruch Klasse zu schreiben:Wie Attribute Initialisierung mit bestimmten Werten in Python verhindern

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) 

Ich möchte jedoch eine Fraktion mit denominator = 0 verhindern definieren, da diese ist in Mathematik nicht erlaubt. Wie erreiche ich das? Ich habe versucht, einen try-except Block in __init__ Funktion und auch einen if-else Zustand setzen, aber nichts davon scheint zu funktionieren.

Vielen Dank im Voraus! Daniel

+2

'__mul__' soll eine neue Instanz von' Fraction' zurückkehrt, nicht eine Zeichenfolge, sonst werden Sie nicht in der Lage sein, zu schreiben, zum Beispiel, 'fract1 * fract2 * fract3'. – robyschek

Antwort

3

Sie können eine Ausnahme als eine Option erhöhen

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