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

Harald Armin Massa ghum at gmx.net
Thu Mar 27 18:18:55 EST 2003


Barbara,

>Wenn ich ein Klasse aufrufe, erzeuge ich eine Instanz. Bleibt die mir
erhalten, muß ich sie >immer wieder erzeugen, blockiert bei 300maligem
Aufrufen der Klasse meine Anwendung?

Bitte laß uns Sprachregeln verinbaren: das Aufrufen einer Klasse heißt
"instanziieren"

Dabei werden Objekte erzeugt.

>Ist das schneller oder langsamer als eine Funktion? Könnte ich nicht
genauso gut 300mal >meine Funktion aufrufen?

Was nun wann wieviel schneller ist, hängt von der Sprache, der
Implementierung und der Funktion selber ab.

Aber die Anwendungsgebiete sind komplett unterschiedlich:

Eine Klasse kann als Sammelbecken für Funktionen (heißen dann Methoden) und
Werte (heißen dann Attribute) gesehen werden.

also:

class auto:
    def __init__(self, besitzer="der Chef"):
        self.besitzer=besitzer
    def geraeusch(self):
        print "brumm, brumm"


meins=auto("Harald")

Hier ist "besitzer" ein Attribut, "geraeusch" eine Methode. Das spannende an
den Klassen ist, daß diese abgeleitet werden können:

class kaputtesauto(auto):
    def gerausch(self):
        auto.gerausch()
        print "quitsch"


kaputtesauto hat weiterhin die automatik, daß mit

kaputtesauto(besitzer="Karl der Käfer")

ein korrektes Auto-Objekt incl. Besitzerfeststellung gebaut werden kann.


In Python verschwimmt das mit Funktion / Methode etwas auch dadurch, daß
Module "Modulobjekte" sein können und damit auf Modulebene definierte
Funktioenen ganz natürlich sind.

Gruß

Harald





More information about the Python-de mailing list