[Python-de] Newbie-FRage: warum Klassen?

Georg Mischler schorsch at schorsch.com
Thu Mar 27 12:11:54 EST 2003


Barbara Griem wrote:

> Hallo Leute, ich hätte da mal eine grundsätzliche Frage:
>
> Ich kann völlig einsehen, warum es Sinn macht, manche Funktionen auszulagern,
> z.B. den Zugriff auf eine Datenbank. Also würde ich die Funktion in einem
> file db.py ablegen und in der eigentlichen Anwendung dann per import db.py
> einbinden.
>
> Manche Leute machen aber dafür in dem file db.py eine class. Manche eine Funktion.
>
> Was ist der Unterschied, bzw. wo liegt der Vorteil?

Der Unterschied liegt darin, dass die Klasse (respektive deren
Instanzen) mehr leistet als nur einen Ersatz fuer eine Funktion
bereitzustellen. Eine Klasse fuer eine einzelne Funktion ist
natuerlich Overkill.

In deinem Beispiel, um auf eine Datenbank zuzugreifen, brauchst
du als Minimum folgendes:

- Eine Funktion, um die Verbindung zu etablieren
- Eine Datenstruktur fuer die Verbindungsdaten.
- Eine Funktion, um ueber diese Verbindung auf die Daten in der
  Bank zuzugreifen.
- Eine Funktion, um die Verbindung wieder abzubrechen.

Diese vier (oder auch wesentlich mehr) Elemente kannst du
entweder frei in deinem Namensraum herumfliegen lassen, oder du
kannst sie in einem Objekt kapseln. Ein solches Objekt kannst du
dann auch an ein anderes Modul weiterreichen, welches dein db.py
eventuell gar nicht importiert hat. Und dann stell dir vor, dass
du gleichzeitig auf mehrere unterschiedliche Datenbanken
zugreifen moechtest, ohne alle involvierten Module jedesmal extra
separat aufbohren zu muessen. Nur das Modul, welches das Objekt
tatsaechlich instanziiert, muss auch wissen, ob die Klasse nun
aus db_x.py oder db_y.py geladen wurde.

Generell gilt, dass die Vorteile der Objektorientierung bei
Beispielen der Komplexitaetsstufe "hello world" im allgemeinen
noch nicht greifen. Interessant wird es fast immer erst dann,
wenn verschiedene Module zusammenarbeiten sollen, du aber
trotzdem die Zustaendigkeiten klar regeln moechtest.


-schorsch

-- 
Georg Mischler  --  simulations developer  --  schorsch at schorsch com
+schorsch.com+  --  lighting design tools  --  http://www.schorsch.com/





More information about the Python-de mailing list