@schneitzmaster: Du musst dir den Unterschied zwischen Klassen und Exemplaren (auch Instanzen genannt) der Klassen klarmachen. Nehmen wir zB. die Klasse
Zahlungsmittel. Es gibt viele Exemplare von Zahlungsmitteln (Euro, Dollar, Yen, ...) die alle gewisse Eigenschaften gemein haben: Sie können gegen Güter getauscht werden. Sie können ineinander gewechselt werden. Sie bestehen aus Papier oder Metall oder Buchungseinträgen in einem Konto. Sie bezeichnen Preise von Gütern. Auf die Frage "Wieviel kostet das?" wäre eine sinnvolle Antwort zB. "2 Euro 98", aber nicht "Zahlungsmittel!".
Auf dein Beispiel übertragen: ein Auto hat als Bestandteile zwar ein oder mehrere Federn, aber nicht die Klasse Feder. Es wäre völlig sinnlos zu sagen "mein Auto besteht aus Metall, Kunstoff, Gummi, Glas, Benzin, Schmieröl und dem abstrakten Konzept der Federung. Wenn das Benzin ausgeht, kann ich in der Tankstelle neues kaufen, und wenn die Federung ausgeht kaufe ich sie im Geschäft für abstrakte Konzepte, wo ich auch Summen, Liebe, Gerechtigkeit und das Konzept des Abstrakten Konzepts kaufen kann".
In der Art der Objektorietierung, wie sie Python verwendet, stellen Klassen insofern Konzepte dar, als sie berschreiben, welche Eigenschaften ihre Exemplare haben. Ein Exemplar der Klasse Feder hat dann zB. eine gewisse Federsteifigkeit, Größe, Gewicht, etc,. je nachdem welche dieser Eigenschaften der Programmierer zur Lösung seines Problems für wichtig erachtet.
Die Klasse Auto beschreibt, welche Eigenschaften alle Autos innerhalb des Programms haben sollen: Preis, Farbe, Gewicht, aber auch zB. Federn, dh. Exemplare der Klasse Feder,
nicht die Klasse Feder selbst:
Code: Alles auswählen
class Feder(object):
def __init__(self, steifigkeit):
self.steifigkeit = steifigkeit
# usw
class Auto(object):
def __init__(self):
self.feder1 = Feder(20)
self.feder2 = Feder(30)
# usw
a = Auto()
print a.feder1.steifigkeit # 20
print a.feder2.steifigkeit # 30
Ein Auto
hat Federn, und eine Feder
hat Steifigkeit, aber ein Auto
ist keine Feder, und eine Feder
ist kein Auto und ein Auto
hat nicht als Bestandteil das abstrakte Konzept der Federung, sondern eine Konkretion dieses Konzepts in Form von konkreten Federn.
In specifications, Murphy's Law supersedes Ohm's.