83
Kapitel 4
Standard-Datentypen
Dieses Kapitel liefert einen Überblick über fundamentale Datentypen, die bei Python vorge-
geben sind (built-in types). Insbesondere gehen wir folgenden Fragen nach:
Wie sind Literale verschiedener Datentypen syntaktisch aufgebaut?
Welche Operationen kann man auf Objekte unterschiedlicher Datentypen anwenden?
Was sind Datentypen aus Sicht der objektorientierten Programmierung?
4.1 Daten als Objekte
Computer verarbeiten Daten. In der objektorientierten Programmierung werden Daten
durch Objekte repräsentiert. Jedes Objekt besitzt eine Identität, einen Wert und einen Typ.
Werte von Objekten werden durch Literale dargestellt. Das sind Zeichenfolgen, die nach
bestimmten Regeln aufgebaut sind. Die Unterscheidung zwischen Literal und Wert ist sehr
feinsinnig und nicht immer wichtig. Häufig verwendet man die Begriffe synonym. Ein
nicht unerheblicher Teil dieses Kapitels widmet sich der Frage, wie Literale von Objekten
unterschiedlicher Datentypen aufgebaut sind.
Die Literale
123 und 'Wort' gehören zu verschiedenen Datentypen, nämlich ganzen Zah-
len (
int) und Zeichenketten (str). Literale für ganze Zahlen werden vom Interpreter daran
erkannt, dass sie nur aus Ziffern bestehen, während Zeichenketten mit Anführungszeichen
oder Hochkommata versehen sind.
Der Typ eines Objektes bestimmt die Art und Weise, wie es in einem Python-Skript verar-
beitet wird. Betrachten Sie folgendes Beispiel:
Eingegeben wird hier jeweils ein Ausdruck, der aus einem Operator und zwei Daten-Objek-
ten besteht. Die Wirkung des Operators
+ hängt offenbar vom Typ der Operanden ab. Im
ersten Fall bewirkt der Plusoperator eine arithmetische Addition, im zweiten Fall bewirkt er,
dass die beiden Zeichenketten aneinandergehängt werden (Konkatenation). Es kann auch
sein, dass ein Ausdruck nicht ausgewertet werden kann, weil die Operanden ungeeignete
Datentypen besitzen:
>>> 1 + 2 # Addition
3
>>> 'Abend' + 'rot' # Konkatenation
'Abendrot'
>>> '1' + 2
Traceback (most recent call last):
Kapitel 4
Standard-Datentypen
84
Warum kommt es hier zu einer Fehlermeldung? Weil der erste Operand eine Zeichenkette
ist (erkennbar an den Anführungszeichen), wird die Operation
+ als Konkatenation inter-
pretiert. Eine Konkatenation kann man aber nur mit Zeichenketten, nicht aber mit ganzen
Zahlen ausführen.
Damit der Python-Interpreter einen Ausdruck auswerten kann, muss er also den Datentyp
der enthaltenen Objekte kennen.
Die Formulierung von Ausdrücken ist ein sehr gebräuchliches Verfahren zur Verarbeitung
numerischer Daten. Den Umgang mit Operatoren und Operanden ist man von Kindesbei-
nen an aus der Schulmathematik gewohnt. Doch widerspricht diese Vorgehensweise streng
genommen einer Grundidee des objektorientierten Programmierens, wonach an Objekte
Botschaften gesendet werden. Es ist jedoch bei Python auch möglich, eine Operation – bei-
spielsweise eine Addition – als Methodenaufruf zu formulieren. Objekte, auf die der Plus-
Operator angewendet werden kann, besitzen nämlich eine Methode
__add__(), die die
Addition realisiert. Beispiele:
In Zeile
#1 wird an das Objekt mit Namen i eine Botschaft geschickt. Der Auftrag lautet:
»Addiere zum eigenen Wert den Wert
2 und liefere das Ergebnis zurück«. Man kann auch
sagen, die Methode
__add__() des Objektes 1 wird aufgerufen.
Die Methodenaufrufe in den Zeilen
#2 und #3 haben die gleiche Wirkung wie die folgenden
arithmetischen Ausdrücke:
Für die meisten Menschen unserer Kultur sind jedoch mathematische Ausdrücke mit Ope-
ratoren wie
+ und * vertrauter und verständlicher. Sie werden deshalb in Programmtexten
an Stelle von Methodenaufrufen verwendet. Aber man sollte wissen, dass der Python-Inter-
preter, wenn er einen Ausdruck auswertet, diesen zunächst in Methodenaufrufe umwandelt
und Botschaften an die enthaltenen Objekte sendet.
File "<pyshell#26>", line 1, in ?
'1' + 2
TypeError: cannot concatenate 'str' and 'int' objects
>>> i = 1
>>> i.__add__(2) #1
3
>>> (1).__add__(2)
3
>>> 1.0.__add__(2.0) #2
3.0
>>> 2.0.__mul__(1.0.__add__(1.0)) #3
4.0
1.2 + 2.0
2.0 * (1.0 + 1.0)

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.