Klassen? Instanzen? Hä?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
HarLekiN
User
Beiträge: 4
Registriert: Dienstag 15. Juni 2004, 09:09
Kontaktdaten:

Hallo,
ich bin noch ein absoluter newb in Sachen Python und ich stoße hier im forum und auch sonst in allen tutorien immer wieder auf Klassen und Instanzen.
tja wie soll ich es sagen? Ich hab keinen Schimmer was das ist!
Aber scheinbar braucht man das ja um in der Sprache voran zu kommen!

Es wäre echt lieb, wenn mir das hier mal irgendjemand grob erklären könnte (for dummies) und zwar so, dass es auch ein Kind kapieren könnte.

Wozu braucht man Klassen?
Was sind Klassen?
Wie schreibt man sowas bzw wie ist sowas aufgebaut?

Gibt es etwas in Delphi oder PHP was man damit vergleichen könnte?

Ein besipiel oder so wäre auch echt super damit man es mal nachvollziehen kann .


Thx
mfg olé
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi olé,

Klassen und Instanzen werden bei OOP (Objektorientierte Programmierung) benutzt. Klassen sind die Beschreibungen von Objekten und Instanzen sind dann die Objekte die mit Hilfe der Klassen erzeugt werden.
Unter http://home.foni.net/~heikos/python/node37.html findest Du eine recht gute Beschreibung, schau Dir auch das Kapitel zu OOP an. Für weitere Fragen einfach hier Posten.


Gruß

Dookie
RainBowBender
User
Beiträge: 53
Registriert: Dienstag 6. April 2004, 10:33

Ein Objekt ist ein Ding, eine Sache, z.B. ein Auto. Objekte haben Eigenschaften in der Programmierung Attribute genannt. (Beim Auto: Farbe, Höchstgeschwindigkeit, Rahmennummer).
Außerdem können Objekte bestimmte Dinge tun. Das auto kann fahren, bremsen, abbiegen, etc).

Da alle Autos fahren, bremsen und abbiegen können, kann man das so festhalten:

Code: Alles auswählen

class Auto:
    def __init__(self,farbe,hoechstgeschwindigkeit):
        self.farbe = farbe
        self.hoechstgeschwindigkeit = hoechstgeschwindigkeit
    def fahren(self):
        print "Das Auto fährt, aber nicht schneller als %i" % self.hoechstgeschwindigkeit
    def bremsen(self):
        print "Auto bremst"
    def abbiegen(self,richtung):
        self.bremsen()
        print "Auto biegt nach %s ab" % richtung
Nun haben wir die Klasse "Auto" beschrieben. Was man nun in Python machen muss, um ein Auto zu erstellen ist folgendes:

Code: Alles auswählen

MeinAuto = Auto("rot",160)
wenn du das im Python Prompft machst, gib mal folgendes danach ein:
MeinAuto.fahren()
MeinAuto.abbiegen()

(Man ruft Methoden eines Objektes so auf: [Objekt].[Methode]
der erste Parameter von Methode ist dann [Objekt].

in Delphi gibt es auch klassen, auch in php (auch Schlüsselwort class)
Zuletzt geändert von RainBowBender am Montag 12. Juli 2004, 20:51, insgesamt 2-mal geändert.
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Hi. Beim MeinAuto.abbiegen wird es eine Endlosrekursion geben, bis der Stack überläuft, davon abgesehen, dass es einen Fehler wegen fehlender Richtung gibt :wink: ... Ansonsten super beschrieben :D .
RainBowBender
User
Beiträge: 53
Registriert: Dienstag 6. April 2004, 10:33

Milan hat geschrieben:Hi. Beim MeinAuto.abbiegen wird es eine Endlosrekursion geben, bis der Stack überläuft, davon abgesehen, dass es einen Fehler wegen fehlender Richtung gibt :wink: ... Ansonsten super beschrieben :D .
das self.abbiegen() sollte self.bremsen() heißen *G*

was meinst du mit Fehler wegen fehlender Richtung?
Bei mir kommt keiner:

Code: Alles auswählen

>>> a = Auto("blau",120)
>>> a.fahren()          
Das Auto fährt, aber nicht schneller als 120
>>> a.abbiegen("rechts")
Auto bremst
Auto biegt nach rechts ab
>>> 
Ansonsten Danke für das Lob
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Hi!
RainBowBender hat geschrieben: was meinst du mit Fehler wegen fehlender Richtung?
Naja, Du hast bei Deinem ursprünglichen Beispiel vergessen, eine Richtung anzugeben.

Code: Alles auswählen

MeinAuto.fahren()
MeinAuto.abbiegen() 
Beim zweiten Beispiel weiß das Auto was es machen soll :wink:

mawe
HarLekiN
User
Beiträge: 4
Registriert: Dienstag 15. Juni 2004, 09:09
Kontaktdaten:

hey cool danke!

dank deines Auto-Beispieles hab ich jetzt wenigstens eine ungefähre vorstellung was ne Klasse ist und ie man die Anwendet.

Das ganze ist ja praktischer las man auf den ersten blick denkt!

cool!

nochmal danke für die Antwort :-)

mfg
RainBowBender
User
Beiträge: 53
Registriert: Dienstag 6. April 2004, 10:33

mawe hat geschrieben:Hi!
RainBowBender hat geschrieben: was meinst du mit Fehler wegen fehlender Richtung?
Naja, Du hast bei Deinem ursprünglichen Beispiel vergessen, eine Richtung anzugeben.

Code: Alles auswählen

MeinAuto.fahren()
MeinAuto.abbiegen() 
Beim zweiten Beispiel weiß das Auto was es machen soll :wink:

mawe
achso, sorry
Antworten