In Python mittels einfachster Form von Klasse möglich solche Datenstrukturen selbst zu definieren:
class Stud: # dumb class pass sta = Stud() # Erzeugung Variable vom typ Stud sta.name = "Albert Unirock" sta.fach = "Physik" sta.alter = 25 ... stb = Stud() # Erzeugung Variable vom typ Stud stb.name = "Berta Bohne" stb.fach = "Informatik" stb.alter = 19 ...
Weiteres Beispiel: Klasse für einfachen Dreier-Vektor
class Dumb3Vec: # weitere leere Klasse, nur Huelle fuer 3-er Vektoren pass # empty statement, hier noetig # Anwendung v = Dumb3Vec() # Erzeugung Variable vom typ Dumb3Vec w = Dumb3Vec() # Erzeugung Variable vom typ Dumb3Vec v.x = 1.0 v.y = 0.5 v.z = -0.8 w.x = 1.5 w.y = -0.5 w.z = -2.8 ... // Laenge ausrechnen len = math.sqrt(v.x*v.x + v.y*v.y + v.z*v.z ) u = Dumb3Vec() # v und w addieren u.x = v.x + w.x u.y = v.y + w.y u.z = v.z + w.z ...
Anstatt gängige Operationen jedesmal wieder neu zu programmieren wäre es
geschickt, wenn dies gleich die Klasse übernehmen könnte,
d.h. Klassen nicht nur zum Definieren beliebiger Datenstrukturen sondern auch
gleich Operationen bzw. Methoden mit diesen Daten
import math class Smart3Vec: # Klasse fuer 3-er Vektoren mit Methoden x = 0 # default values y = 0 z = 0 def Length( self ): return(math.sqrt(self.x*self.x + self.y*self.y + self.z*self.z )) def Add( self, a ): t = Smart3Vec() t.x = self.x + a.x t.y = self.y + a.y t.z = self.z + a.z return(t) # Anwendung v = Smart3Vec() # Erzeugung Variable vom typ Smart3Vec w = Smart3Vec() # Erzeugung Variable vom typ Smart3Vec v.x = 1.0 v.y = 0.5 v.z = -0.8 w.x = 1.5 w.y = -0.5 w.z = -2.8 # v kann seine Laenge selbst ausrechnen ... print (v.Length()) # ... und weiss auch wie es einen anderen Vektor addiert u = v.Add(w) print (u.Length())
Grundkonzept für Objektorientiertes Programmieren