2012-11-23 3 views
9

Ich bin neu in Python. Ich bin vertraut mit Java, C/C++ und OCaml. Ich verstehe Lambda Calculus und Elementartheorie wegen eines Programmiersprachenkurses, den ich an der Universität nahm.Python Typ System - Objekt vs Typ

Bewaffnet mit diesem Hintergrund habe ich versucht, dies zu lesen - down http://www.cafepy.com/article/python_types_and_objects/python_types_and_objects.html

Irgendwo erwähnt er dies:

  • (Typ 'Objekt') ist eine Instanz (Typ 'Typ')
  • (Typ 'Objekt') ist eine Unterklasse von keinem Objekt.
  • (Typ 'Typ') ist eine Instanz von sich.
  • (type'type ') ist eine Unterklasse von (Typ 'Objekt')

ich nicht in der Lage bin mein armes Hirn, um dies zu wickeln:

  • (Typ 'Objekt') ist eine Instanz (Typ ‚Typ‘)
  • (Typ ‚Typ‘) ist eine Unterklasse von (Typ ‚Objekt‘)

Was der bleep hier geschieht? Was ich hören möchte, sind extrem gründliche Gründe dafür, was genau hier passiert und warum die Dinge so sind, wie sie sind. Keine oberflächlichen Gründe oder Analogien bitte.

Antwort

4

Es geht speziell um das Objekt type. Für type erben alle Typen von <type 'type'>.

Ich glaube, dass die andere Aussage nur darauf hinweist, dass <type 'type'> ein object ist; ein Beispiel, das ich daran dachte, von der Suche weiter unten:

t = list.__class__ # <type 'type'> 
t.__bases__ # (<type 'object'>,) 
0

Da der Begriff der Art der gleiche wie Klasse ist, können Sie Typ mit normalen objektorientierten Techniken und Klasse Syntax Unterklasse, um sie anzupassen.

Und da Klassen tatsächlich Instanzen der Typklasse sind, können durch das Erstellen von Klassen aus benutzerdefinierten Unterklassen vom Typ benutzerdefinierte Klassenarten implementiert werden.

In neuen Stil Klassen:

  • Typ ist eine Klasse, die Klassen benutzerdefinierte erzeugt.
  • Metaklassen sind Unterklassen der Typklasse.
  • Klassenobjekte sind Instanzen der Typklasse oder einer Unterklasse davon.
  • Instanzobjekte werden aus einer Klasse generiert.