12.4 Objektphilosophie 

Seitdem in Python 2.3 Datentypen und Klassen vereinigt wurden, ist Python von Grund auf objektorientiert. Das bedeutet, dass im Prinzip alles, mit dem Sie bei der Arbeit mit Python in Berührung kommen, eine Instanz irgendeiner Klasse ist. Von der einfachen Zahl bis zu den Klassen [Der Datentyp von Klassen-Instanzen sind sogenannte Metaklassen, deren Verwendung in diesem Buch nicht behandelt wird. ] selbst hat dabei jedes Objekt seine eigenen Attribute und Methoden.
Insbesondere ist es möglich, von eingebauten Datentypen wie list oder dict zu erben.
Das folgende Beispiel zeigt eine Subklasse von list, die den Durchschnittswert ihrer Elemente berechnen kann. Sollte ein Element einen anderen Datentyp als int oder float haben, wird es einfach ignoriert:
class ListeMitDurchschnitt(list): def durchschnitt(self): summe, i = 0.0, 0 for e in self: if type(e) in (int, float): summe += e i += 1 return summe / i
Der Datentyp ListeMitDurchschnitt kann nun genau wie der Datentyp list verwendet werden:
>>> l = ListeMitDurchschnitt((2, 3, 4)) >>> l [2, 3, 4] >>> l.append(5) >>> l.durchschnitt() 3.5
Durch die konsequente Objektorientierung werden Python-Programme noch leichter zu entwickeln und wiederzuverwenden.