Ein Objekt als theoretisches Konstrukt ist sehr einfach: Es ist eine Struktur, die Daten, Funktionen oder beides speichert. Die Idee ist, dass diese Strukturen ein Gefühl von "Selbst" haben, das in den meisten Sprachen außerhalb von Python impliziert ist. Dies wird als "Deskriptor" bezeichnet und gibt dem Objekt einen Selbstreferenzpunkt, der Daten (Variablen oder Felder) und Funktionen (normalerweise als Methoden bezeichnet) an das betreffende Objekt bindet. Die Idee ist, dass Sie speziell eine Variable oder Methode verwenden, die zu dieser bestimmten Instanz gehört (zugewiesener Speicherblock normalerweise darunter), anstatt zu einem größeren, allgemeineren Konstrukt.
Objektsysteme variieren in Bezug auf zwei große Kategorien: Vererbung und Zugriff.
Einige, wie Java oder C ++, haben Klassen deklariert, die als "Blaupausen" für Objekte dienen, die dann zugewiesen werden. Diese Klassen und ihre Objekte können nach der Instanziierung nicht mehr strukturell geändert werden. Sie können ihren Inhalt in dem Sinne überschreiben, dass sich Variablen ändern können, ihre Struktur jedoch statisch ist. Sie können beispielsweise keine neuen Methoden zu HashMap in Java hinzufügen. Sie können die Schnittstelle erweitern (im Grunde teilweise implementierte Klassen, die als Verträge dienen) oder eine Unterklasse erstellen, um die zusätzlichen Methoden oder Variablen zusammen mit allen ursprünglichen Variablen und Methoden der jeweiligen Klasse abzurufen.
Andere klassenbasierte Sprachen, von denen Ruby am häufigsten zitiert wird, ermöglichen es Ihnen, eine vorhandene Klasse einfach zu öffnen und Methoden nach Belieben hinzuzufügen. Dies ist ein Streitpunkt und wird von vielen als sehr, sehr gefährlich angesehen.
Javascript ist noch lockerer. Objekte sind nichts anderes als eine Sammlung von Slots für Variablen oder Funktionen. Sie können geändert oder überschrieben werden, wenn der Programmierer dies für erforderlich hält. Sie können sogar willkürlich als "Prototypen" für andere Objekte geklont werden, wodurch alle ihre Fähigkeiten weitergegeben werden.
Die Zugangskontrolle ist der andere große Unterschied zwischen den verschiedenen Sprachen.
Einige Sprachen wie Java haben sehr streng erzwungene Zugriffsmodifikatoren wie "privat" und "geschützt", die genau definieren, welche Klassen und Unterklassen eine bestimmte Variable oder Methode verwenden können.
Andere, wie z. B. Python, sind weniger formal und verwenden die Konvention eines Unterstrichs vor dem Methoden- oder Variablennamen, um anzuzeigen, dass es privat ist.
Letztendlich ist Python eine absolut legitime Sprache, um objektorientiert zu programmieren. Sie setzt sie einfach nicht so streng durch wie einige der anderen.