Ganz grob sind Objekte dazu da um Daten und dazugehörige Funktionen zu einer Einheit zusammen zu fassen. Eben Objekte mit einem (inneren) Zustand und einem (äusseren) Verhalten zur Verfügung zu stellen.
Datentypen sind nicht nur "Dinge" mit denen man "rechnen" kann. Ein (abstrakter) Datentyp kann definiert werden durch eine Menge von gültigen Zuständen und Operationen die mit diesen Zuständen arbeiten. Klingt verdammt nach der Beschreibung für einem Objekt, gell. Klassen sind sozusagen Baupläne oder Vorlagen für Objekte.
Beispiele: Schau Dich einfach mal in der Standardbibliothek um, da gibt's genug.
Ein Beispiel wäre der Revolver in dem russischen Roulette was hier neulich jemand implementieren wollte. Das Objekt hat einen Zustand: Die Anzahl der Kammern und wie oft man noch abdrücken kann bevor es knallt. Ausserdem wollte der Computerspieler gerne wissen wie oft seit dem letzten drehen der Trommel schon abgedrückt wurde. Und das Objekt hat "Verhalten": Drehen der Trommel um die Kugel zufällig irgendwo zu platzieren und abdrücken. Bei letzterem wird dann zurückgegeben ob sich ein Schuss gelöst hat oder nicht.
Code: Alles auswählen
import random
class Revolver(object):
def __init__(self, chambers=6):
self.chambers = chambers
self.pulls_till_bang = 1
self.pulls_since_spin = 0
def spin(self):
self.pulls_till_bang = random.randint(1, self.chambers)
self.pulls_since_spin = 0
def pull_trigger(self):
self.pulls_since_spin += 1
self.pulls_till_bang -= 1
return self.pulls_till_bang == 0