Sonntag, 30. Dezember 2012

Erste objektorientierte Gehversuche

Die Aufgabe bei Programmieren.ch verlangt, dass ein Skript geschrieben wird, das 2 Brüche addieren kann. Unter Rückgriff auf den Wikipedia-Artikel „Bruchrechnung schien es mir recht einfach die nötige Funktion zu schreiben:
class Bruch(object):
    ''' Eine Bruch-Klasse, die einen Bruch darstellt
    '''
    
    def __init__(self, zaehler, nenner):
        self.zaehler = zaehler
        self.nenner = nenner

    def __add__(self, bruch):
        # Ueberlaedt den +-Operator
        self.zaehler = self.zaehler * bruch.nenner + bruch.zaehler * self.nenner
        self.nenner *= bruch.nenner
        
        return Bruch(self.zaehler, self.nenner) 
Mit dem Python-Modul fractions war die Aufgabe allerdings einfach zu lösen - danke nochmals für den Hinweis von +Marc Rintsch - und ich muss mir mal was anderes suchen, um daran Objektorientierung zu lernen. Die Lösung mit Python nun:
from fractions import Fraction
b1 = Fraction(2,3)
b2 = Fraction(1,3)
print(b1 + b2)
Python bringt die Batterien mit.

2 Kommentare:

  1. Du darfst in der `__add__()`-Methode das Objekt selbst nicht verändern! Wenn Du ``x = a + b`` schreibst, dann erwartest Du doch zurecht das `a` dabei seinen Wert nicht verändert!

    Das `fractions`-Modul aus der Standardbibliothek ist Dir bekannt?

    AntwortenLöschen
    Antworten
    1. Nein, kann ich bis gerade nicht und habe ich jetzt gefunden. Danke für den Hinweis! Mit dem Modul war die Aufgabe ganz einfach zu lösen.

      Löschen