2016-07-10 6 views
0

Ich studiere gerade Python und lerne über Wörterbücher. Ist es richtig, Wörterbücher mit Objekten aus C++ zu vergleichen, die nur Datenmitglieder und keine Methoden enthalten?Können Wörterbücher in Python als Objekte aus C++ nur mit Datenelementen betrachtet werden?

Natürlich gibt es keine Klassendefinition, so dass jede Objektinstanz in Python anders deklariert werden kann, aber trotzdem halte ich es für eine gute Analogie Wörterbücher mit Objekten ohne Methoden zum Lernen zu verknüpfen. Oder ist es etwas, was ich hier vermisse?

+3

Wörterbücher haben Methoden. –

+0

@MartijnPieters Ich wusste nicht, dass Sie Methoden hinzufügen können ... Das bedeutet also, dass die Ähnlichkeit noch stärker ist. –

+2

Ich habe nicht gesagt, dass du * mehr Methoden hinzufügen * kannst. Ich sagte Wörterbücher * haben * Methoden. Die 'dict'-Klassendefinition ist nicht beschreibbar, aber Sie * können * eine Unterklasse erstellen. –

Antwort

2

Alle Werte in Python sind Objekte, Wörterbücher enthalten. Wörterbücher haben auch Methoden! Beispiel: dict.keys() ist eine Methode. Daher sind Pythons dict Instanzen nicht Objekte mit nur Datenelementen.

Dort ist eine Klassendefinition für Wörterbücher; nur weil es im Python C-Code definiert ist, macht dict keine Klasse weniger. Sie können dict von der Unterklasse ableiten, wenn Sie zum Beispiel weitere Methoden hinzufügen müssen.

+0

Aber wenn es eine Klasse für Wörterbücher in Python gibt, wie kann jemand alle Arten von Methoden und Datenvariablen hinzufügen? Werden die neuen Wörterbücher erstellt, die die Struktur der Wörterbuchklasse erben und weitere Elemente hinzufügen? Ich wäre gespannt, wie die Wörterbuchklasse im Python-Code definiert ist. –

+0

@yoyo_fun: Warum müsste eine Klasse beschreibbar sein, um eine Klasse zu sein? Und wie alle Unterklassen erhält jeder Code, der die Elternklasse ('dict') verwendet, nicht die Methoden einer Unterklasse, nein. –

+0

@yoyo_fun Die Wörterbuchobjektquelle ist in C geschrieben (für Standard CPython); Sie können den Quellcode [hier] anzeigen (https://github.com/python/cpython/blob/master/Objects/dictobject.c). –

3

Ist es richtig, Wörterbücher mit Objekten aus C++ zu vergleichen, die nur Datenelemente und keine Methoden enthalten? NO

Ein Dictionary ist eine Datenstruktur, die analog zu std::unordered_map ist, obwohl die Implementierung unterschiedlich sein kann.

Ein Objekt ist eine Instanz einer Klasse. Sowohl C++ als auch Python unterstützen die objektorientierte Programmierung zu einem großen Teil, obwohl es Unterschiede gibt, die außerhalb der Reichweite dieser Antwort liegen. Natürlich ist sowohl in Python als auch in C++ entweder die dict oder die std::unordered_map als eine Klasse implementiert, die Methoden und Datenelemente aufweist. In Python ist dict ein Typ, der von <type 'type'> erbt. In Python ist alles ein Objekt, selbst wenn es eine Klasse oder eine Funktion ist, ist es in der Python-Welt zu umgangssprachlich, um über Objekte zu sprechen.

Verwandte Themen