SOFTWAREENTWICKLUNG MIT PYTHON

Werbung
S OFTWAREENTWICKLUNG
MIT P YTHON
St. Behrens
L. Hellmig
FAHRPLAN
 Motivation und Kurzvorstellung
 Über den Umgang mit Daten
 Algorithmik
 Grafisches mit Python
 Turtlegrafik
 GUI
 Grundlagen der Objektorientierung
M OTIVATION
 Delphi und Java stellen eine hohe
Einstiegshürde für Programmieranfänger
dar.
 Ressourcen werden für Codierung statt für
die Modellierung von Daten und
Algorithmen verbraucht.
(Klammern- und Semikolonsuche in
unübersichtlichem Quelltext)
 Verändertes Lizenzmodell für Delphi
 Nach Übernahme von SUN durch Oracle
unklare Zukunft von Java
E RFAHRUNGSWERTE MIT P YTHON
 Weiterbildungen/Vorlesungen
 Programmiersprache der Landesolympiade
Informatik
 www.pythonchallenge.org
 Python als Sprache visueller
Programmierumgebungen
 Hamster
 Kara
 Scratch
 … www.pathfinder-mv.de
M ONTY
P YTHON :
Die
N a m e n s ge b e r
http://screenrant.com/bright-side-life-jake-16534/
5
P YTHON (*1990)
Verbreitung
 lokale, plattformunabhängige,
zeitunkritische Anwendungen
 Webapplikationen
 Schnittstellen zu anderen
Programmiersprachen
http://www.flickr.com/photos/52614599@N00/199700290/
Philosophie
 einfach, intuitiv und mächtig
 Open Source
 wie reines Englisch zu lesender
Quelltext
 geeignet für tägliche Aufgaben und
kurze Entwicklungszeiten
Guido van Rossum
wohlwollender Diktator auf
Lebenszeit (Benevolent
Dictator for Life, BDFL)
6
PALINDROMTEST: J AVA
VS .
P YTHON
>>> import antigravity
S TECKBRIEF




Interpretierte Sprache
Implizite, dynamische, starke Typisierung
Struktur des Quelltextes ist Syntaxelement.
Unterstützung des
 imperativen,
 objektorientierten und
 funktionalen
Programmierparadigmas
 aktuelle Versionen
 Python 3.2
 Python 2.7.1
Python 3.x
Python 2.x
I NSTALLATION
 http://www.python.org/
???
I NSTALLATION
 http://www.portablepython.com/
 Für weitere Plattformen (z. B. DOS ) sind
v. a. Versionen der 2.x-Reihe erhältlich.
I NSTALLATION
 Installation des Python-Interpreters ist nötig
zum
 Programmieren
 Ausführen der Programme
 Installierbar auf
 lokalen Maschinen
 Webservern
 Erzeugen einer lauffähigen Anwendung
unter Windows ist mit dem Tool py2exe
möglich.
IDE S
 Python Command Line
 IDLE (Shell + IDE)
 Syntaxhighlighting
 Einfacher Debugger
 Alternativen?
 PythonWin (ActivePython)
 PyEclipse, PyDev (Eclipse-Plugins)
 Jython, CPython, IronPython, … (Java, C, .NET)
http://couchtripper.com/pics/comedy/EricIdle.jp
g
 In der Standardausstattung enthalten sind
V OM Q UELLTEXT ZUM M ASCHINENCODE
Compiler
 Übersetzung des
Quellcodes als Ganzes
in eine ausführbare
Programmdatei
Interpreter
 Zeilenweise
Übersetzung des
Quelltextes und
umgehende Ausführung
Eins
Eins
Zwei
Drei
Eins
Zwei
Zwei
Eins
Zwei
Drei
Drei
Drei
14
P ROGRAMMAUSFÜHRUNG
Compiler
 Geschwindigkeitsvorteile
 Fehlererkennung:
1.
2.
Syntaktisch beim
Compilieren
Erkennen von
Laufzeitfehlern (technisch
bzw. semantisch)
Interpreter
 In-Time-Übersetzung
reduziert die Performance.
 Erkennung von Fehlern (mit
Ausnahme grober
Syntaxfehler) in den
betreffenden Zeilen erst bei
der Programmausführung.
 Test einzelner Anweisungen
per Eingabekonsole möglich
15
E RSTE S CHRITTE
Python
IDLE STARTEN
P YTHON -S HELL ALS TASCHENRECHNER
Die Eingabe eines mathematischen Terms wird vom
Interpreter ausgewertet und auf der Konsole
ausgegeben.
>>> 8+2 #Addition
10
>>> 8-2 #Subtraktion
6
>>> 8*2 #Multiplikation
16
>>> 8/3 #Division
2.6666666666666665
>>> 8//5 #ganzzahlige Division
1
>>> 8%5 #Modulo (Rest bei
ganzzahliger Division)
3
>>> 8**3 #Potenzieren
512
Die Vorrangautomatik wird beherrscht.
2.666: Es wird ein Dezimal-PUNKT gesetzt.
18
DATENTYPEN
Python
D ATENTYPEN IN P YTHON
 Jeder Datentyp ist eine Klasse.
 Operieren mit
 Klassenmethoden
 des Datentyps selbst
 importierter Klassen (z. B. math, random, …)
 Built-in-Funktionen
http://docs.python.org/py3k/library/functions.html
?highlight=pow#built-in-functions
 Operatoren
WICHTIGE
D ATENTYPEN IN P YTHON
 Numerische Typen
int, float, complex
 Boolescher Typ
bool
 Sequentielle Typen
str, list, tuple
 Mapping-Typ
dict
 Mengentypen
set, frozenset
 KeinWert-Typ
NoneType
21
N UMERISCHE D ATEN : O PERATOREN /F UNKTIONEN
+ - * /
**
//
%
<>
<= >=
== !=
Grundrechenarten
Potenzieren
Ganzzahlige Division
Modulo
Kleiner/Größer
Kleiner-Gleich/Größer-Gleich
Gleich/Ungleich
abs(x)
Absoluter Betrag
round(x,n) Rundung auf n Dezimalstellen
N UMERISCHE D ATEN : WEITERE K LASSEN
 Die Klassen math
und random
beinhalten eine
Reihe weiterer
nützlicher
Funktionen.
 Ein einmaliger
Import der Klasse
erfolgt mit import.
 Aufruf mit
Punktnotation
klasse.methode()
N UMERISCHE D ATENTYPEN INT , FLOAT , COMPLEX
Wertebereich unterliegt keinen
Restriktionen! (2**200000)
float
Entspricht IEEE 754 double (64 Bit)
Informationen zum Wertebereich und zur
Genauigkeit des Datentyps erhält man mit
int
>>> import sys
>>> sys.float_info
sys.floatinfo(max=1.7976931348623157e+308,
max_exp=1024, max_10_exp=308,
min=2.2250738585072014e-308, min_exp=-1021,
min_10_exp=-307, dig=15, mant_dig=53,
epsilon=2.220446049250313e-16, radix=2, rounds=1)
complex
auf Anfrage
T YPBESTIMMUNG UND - UMWANDLUNG
 Typbestimmung durch
type(Datum)
 Typecasting mit
<zieltyp>(Datum)
 Umwandlung in String-Typ
 mit str(Datum)
 format(Datum)
Jeder
Datentyp
ist eine
Klasse.
Ü BER DEN U MGANG MIT VARIABLEN
 Implizite Typisierung
Zuteilung des Typs einer Variablen zur
Laufzeit in Abhängigkeit vom Wert.
 Eine explizite Deklaration entfällt.
 Dynamische Typisierung
Der Variablentyp kann sich während der
Laufzeit in Abhängigkeit von den Daten
ändern.
 Starke Typisierung
Der Variablentyp ist stets eindeutig
bestimmbar.
I NTERNE D ATENVERWALTUNG IN P YTHON
 Alle numerischen Typen sind immutabel.
 Immutable Daten können nicht "am Platz"
überschrieben werden.
I NTERNE D ATENVERWALTUNG IN P YTHON
 Alle numerischen Typen sind immutabel.
Prinzip: Die
Variablen werden
den Daten
zugeordnet.
T YPISIERUNG
 Starke Typisierung
Alle Daten sind zu einem bestimmten
Zeitpunkt eindeutig einem Typ zuzuordnen.
 Implizite Typisierung
Deklarierung von Variablen und Zuordnung
des Datentyps mit erster Wertzuweisung
Unnötig sind darum
 eine explizite Deklaration der Variablen
 die Angabe eines Datentyps
 Dynamische Typisierung
Der Datentyp ist während der Laufzeit
veränderlich.
T YPISIERUNG IN P YTHON
 stark
 implizit
 dynamisch
in der Konsole 
kurzes Programm 
D AS N ICHTS ALS D ATUM
NoneType None (kein Wert)
 Eigener Datentyp mit nur einem Wert (None)
 Dient dem Codieren fehlender/nicht
berechenbarer Daten
L OGISCHER D ATENTYP BOOL
bool
True/False
Operatoren and, or, not
Die Auswertung Boolescher Terme erfolgt stets
vermittels des Verfahrens der Lazy Evaluation,
d. h. analog zu den Java-Operatoren | bzw. &.
Ü BERSICHT ZU SEQUENTIELLEN D ATENTYPEN
 Strings sind Zeichenketten
 immutabler Datentyp
 wort1 = 'Hallo'
 wort2 = "Hallo"
 Listen sind geordnete Reihungen beliebiger
Datentypen.
 mutabler Datentyp
 fibonacciliste = [0,1,1,2,3,5,8,13]
 letter = ['Anton','Berta','Cäsar','Dora']
 Tupel sind Listen "mit Schreibschutz".
 immutabler Datentyp
 letter = ('Anton','Berta','Cäsar','Dora')
S EQUENTIELLE D ATENTYPEN
Strings, Listen und Tupel
 Die Länge von Strings und Listen ist
während der Laufzeit veränderlich.
 Zu Tupeln gibt es nicht viel zu sagen.
 Es gibt keinen statischen Datentyp Array.
I NDIZIERUNG SEQUENTIELLER D ATEN
liefert das i-te Element
der Sequenz s,
s[i:j] liefert den Ausschnitt von
Index i bis Index j von s ,
s[i:]
liefert den Ausschnitt von
Index i bis zum Ende von
s,
s[i:j:k] liefert den Ausschnitt von
Index i bis Index j von s,
wobei nur jedes k-te
Element innerhalb dieses
Ausschnitts beachtet wird
s[-i]
liefert das i -te Zeichen
von hinten,
s[i]
O PERATIONEN AUF SEQUENTIELLEN DATEN
x in s
x not in s
s+t
s+=t
s*n
is
==
prüft, ob sich x in der Sequenz s
befindet
prüft, ob sich x nicht in der
Sequenz s befindet
erzeugt Verkettung von s und t als
neuer Sequenz,
hängt die Sequenz t an die Sequenz
s an,
liefert einen neuen Sequenz, in der
die Sequenz s n-fach kopiert ist.
prüft zwei Sequenzen auf
physische Identität
prüft zwei Sequenzen auf
inhaltliche Identität
F UNKTIONEN /M ETHODEN S EQUENTIELLER D ATEN
Built-In-Funktionen
len(s)
min(s)
max(s)
liefert die Anzahl der
Elemente in s,
liefert das kleinste
Element von s, gemäß
der definierten
Ordnungsrelation.
liefert das größte
Element von s, gemäß
der definierten
Ordnungsrelation.
Methoden
count(x) Zählt das Auftreten
von Elementen mit
dem Wert x
index(x) Ermittelt den Index
des ersten Auftretens
von x
Z EICHENKETTEN
str
 Werden im Unicode (UTF-8) gespeichert.
 Können sowohl in "Gänsefüßchen" als auch
in 'Hochkommas' eingeschlossen werden.
 Spezialfall """DocString""" bzw. '''DocString'''
 Länge beliebig
 Vermissen Sie einen char-Typ?
U MWANDLUNG Z AHL  S TRING MIT FORMAT ()
 Die Funktion format(...) erzeugt aus
numerischen Daten einen String, dessen
Eigenschaften mit Format-Spezifikationen
bestimmt werden können.
 format(<wert>[, <format_spezifikation>])
 Einfachster Fall:
39
U MWANDLUNG Z AHL  S TRING MIT FORMAT ()
Die Format-Spezifikation bietet u. a. folgende Optionen.*
[Vorzeichen][0][Breite][,][.Genauigkeit][Typ]
 Vorzeichen::= '+' | ' -' | ' '
'+' erzwingt ein Vorzeichen auch bei positiven Zahlen
 Breite::= integer
Zahl der reservierten Stellen für den Ausdruck. Eine
führende 0 sorgt für das Auffüllen aller Stellen mit 0.
 Das Komma erzeugt Tausendertrennungen.
 Genauigkeit::= integer
Bestimmt die Genauigkeit. Sollte kleiner/gleich der Breite
sein. Nur für float-Typ verfügbar.
 Typ bestimmt weitere datentypspezifische Formatierungen.
Genaueres in den Hinweisen zu den Typen int und float.
* ausführlicher auf:
http://docs.python.org/py3k/library/string.html#format-specification-mini-language
40
U MWANDLUNG Z AHL  S TRING MIT FORMAT ()
Beispiele
41
M ETHODEN DER S TRING -K LASSE (A USWAHL )
find(...)
lower()
s.find(sub[, start[, end]])  int
s.lower()  str
ermittelt den Index des ersten
Auftreten eines Substr ings. fail: -1
Wandelt alle Buchstabe n in
Kleinbuchstabe n.
(analog: upper())
count(...)
replace(...)
s.count(sub[, start[, end]])  int
s.replace (alt, neu[, count])  str
zählt das (nicht überlappende )
Vorkomme n eines Substr ing s
erzeugt eine Kopie des Strings,
bei der alle Teilstrings <old>
durch den Teilstring <neu>
ersetzt werden. Optional
<count>: maximale Zahl der
Ersetzungen
isalpha()
s.isalpha()  bool
ist True, wenn alle Zeichen
Buchstabe n sind.
(analog: isdigit())
encode()
s.encode()  str
zeigt die interne Codierung in
UTF-8 an.
42
S TRINGS ALS IMMUTABLER D ATENTYP
 Es wäre naheliegend zu versuchen, eine
direkte Wertzuweisung für ein Zeichen des
Strings vorzunehmen, ABER...
 Fehlerursache:
Strings sind immutable Datentypen, d. h. sie
können nicht "am Ort" geändert werden.
S TRINGS ALS IMMUTABLER D ATENTYP
 Abhilfe schafft eine neue Wertzuweisung.
L ISTEN
list
 Einschluss in eckige Klammern
 Trennung der Elemente durch Komma
liste = [el0, el1, el2, … ,eln]
 Listen können beliebige Datentypen
enthalten.
leereListe = []
listeMitZahlen = [1,2,3]
listeMitStrings = ['Hund', 'Katze', 'Maus']
gemischteListe = [1, 'Tiger', 45, -3.4, 'Huhn']
listeMitListen = [[1,2,3],['a','b','c']]
L ISTEN .M ETHODEN () (A USWAHL )
Element x zu a hinzufügen (ans
Ende)
a.insert(i,x) Element x zu a hinzufügen (an
Stelle i)
a.remove(x)
löscht x aus a
a.pop()
gibt das letzte Element von a
aus und löscht es
a.pop(n)
gibt das n-te Element von a aus
und löscht es
a.sort()
sortiert a lexikographisch
a.reverse()
dreht die Reihenfolge der
Elemente in a um
a.append(x)
46
L ISTEN ALS M UTABLER D ATENTYP
 Die Elemente von Listen sind am Platz
überschreibbar.
 Dies wird bei der Verwendung von Listen als
Funktionsparameter zu beachten sein.
L ISTEN VERSCHIEDENER D ATENTYPEN
In einer Liste können
verschiedene Datentypen
gespeichert werden:
Verbesserung:
Jedes Listenelement ist selbst eine Liste.
zettel[5][1]
zettel[5]
zettel[5][0]
zettel[4][1]
zettel[4]
zettel[4][0]
zettel[3][1]
zettel[3][0]
zettel[3]
zettel[2][1]
zettel[2]
zettel[2][0]
zettel[1][1]
zettel[1][0]
zettel[1]
zettel[0][1]
zettel[0][0]
zettel[0]
D ICTIONARIES
Syntax
 Einschluss des Dictionaries in geschweifte
Klammern
 Trennung der Einträge durch Komma
 Jeder Eintrag entspricht der Form key : value
dct={k0:v0, k1:v1, k2:v2, … ,kn:vn}
 weitere elegante Möglichkeiten zur Erzeugung von Dictionaries auf
http://tutorial.pocoo.org/datastructures.html?highlight=dictionary#dictionar
ies
49
D ATEN IN D ICTIONARIES
1. keys (Schlüssel)
 dürfen jeweils nur einmal im Dictionary
vorkommen.
 dürfen nicht veränderbar sein  müssen also
immutablen Datentypen angehören.
(Zahlenwerte, Strings, Tupel mit ausschließlich immutablen
Elementen – Boolesche Werte werden wie 0 und 1 behandelt.)
 dürfen innerhalb eines Dictionaries auch
unterschiedlichen Datentyps sein.
2. values (Werte)
 dürfen mehrfach vorkommen.
 sind von beliebigem Datentyp.
Z UGRIFF AUF D ICTIONARIES
 Auslesen eines Wertes durch dict[key]
 Hinzufügen eines Wertes durch Zuweisung
dict[key] = value
51
F UNKTIONEN UND O PERATOREN
 max() und min() beziehen sich auf die
Keys.
 Der in – Operator bezieht sich auf die Keys.
D ICTIONARIES .M ETHODEN () 1/3
dict.clear()
Entfernt alle Elemente des Dictionaries dict
dict.copy()
Erzeugt eine Kopie des Dictionaries dict
dict.update(dict2)
Fügt die Einträge des Dictionaries dict2 dem Dictionary
dict hinzu
dict.has_key(key)
Gibt True zurück, falls key im Dictionary; anderenfalls
False.
53
D ICTIONARIES .M ETHODEN () 2/3
dict.fromkeys(keyseq, default=None)
Erzeugt ein neues Dictionary aus Schlüsseln einer
Sequenz und einem vorgegebenen Wert.
dict.get(key, default=None)
Für key wird der Wert zurückgegeben; falls key nicht im
Dictionary ist, der default-Wert
54
D ICTIONARIES .M ETHODEN () 3/3
dict.items()
Gibt eine (spezielle) Liste aller Tupelpaare (key,value)
der Einträge des Dictionaries dict zurück.
dict.keys()
Gibt eine (spezielle) Liste aller Schlüssel des
Dictionaries dict zurück.
dict.values()
Gibt eine (spezielle) Liste aller Werte des Dictionaries
dict zurück.
Die Umwandlung in eine normale Liste kann jeweils per
Typecasting erfolgen.
55
M ENGENTYPEN
 set
{el_1, el_2, …, el_n}
 mutabler Datentyp
 frozenset
({el_1, el_2, …, el_n})
 immutabler Datentyp
Es stehen vorwiegend Methoden für
Mengenoperationen zur Verfügung.
A LGORITMIK
Python
V ORBEMERKUNGEN ZUR SYNTAX
 Unterscheidung Groß- und Kleinschreibung
 Zwang zum sauberen Programmierstil
 nur ein Befehl pro Zeile
 keine Semikola o. dgl.
 Blöcke werden durch Einrückungen definiert
 Keine {Klammern} oder BEGIN/END-Konstrukte
 Kommentare:
V ORBEMERKUNG D ATENEIN - UND - AUSGABE
 Dateneingabe mit der Funktion
input(string)  string
 Die Konvertierung in den Zieldatentyp kann
per Typecasting erfolgen.
 Datenausgabe mit
print(Wert[e],sep =' ',end='\n')
S TEUERANWEISUNGEN
 Verzweigung
 if – else
 if – elif – else
Es gibt keine Mehrfachverzweigung (case, switch)
 try – except – else – finally zum Behandeln von
Exceptions
 Schleifen
 while / while … else
 for / for … else
Es gibt keine weiteren Schleifenarten
(repeat-until, do-while)
V ERZWEIGUNGEN : S YNTAX
if bedingung:
<then-Anweisungsblock>
else:
<else-Anweisungsblock>
 bedingung ist ein boolescher Ausdruck.
 Die Einrückungen sind Element der Syntax.
Alle Anweisungen nach einem if oder else müssen
gleich tief eingerückt werden.
M EHRFACHVERZWEIGUNGEN ELSE IF  ELIF
 Mehrfachverzweigungen
sind beliebig tief
schachtelbar.
 Problem: Quelltextbreite
 else-if-Konstrukte
können durch elif
substituiert werden.
F EHLERBEHANDLUNG MIT TRY - EXCEPT - ELSE
Die Ausführung kritischen Codes unter Vorbehalt und das
Definieren einer Ausnahmeregelung verhindern einen
Programmabsturz.
try:
<< kritischer Code >>
# Ausführung , falls keine Exception
except:
# kritischer Code wird nicht ausgeführt
<< Verhalten des Programms bei Exception >>
else:
# nach bereits ausgeführtem kritischen Code
<< weiterer Code , der nur ausgeführt wird ,>>
<<wenn keine Exception erzeugt wurde >>
S CHLEIFE 1: WHILE
while bedingung:
<Schleifenkörper>
else:
<Anweisungsblock nach Schleifenende>
else
Der Block hinter else wird ausgeführt, wenn die
Schleife regulär beendet wird.
beendet die Schleife sofort ohne Ausführung des
else-Zweigs
continue unterbricht einen Schleifendurchlauf
break
S CHLEIFE 2: FOR - IN
for element in datenmenge:
<Schleifenkörper>
else:
<Anweisungsblock nach Schleifenende>
datenmenge
 durch range-Funktion erzeugte Sequenz ganzer Zahlen ( int)
 sequentieller Datentyp ( str, list, tuple)
 Abbildungstyp (dict)
 Mengentyp (set, frozenset)
element
 sukzessives Durchlaufen aller Elemente der Datenmenge
S CHLEIFE 2: FOR – IN (B EISPIELE )
F UNKTIONEN
Syntax:
def funktionsname(parameter1, parameter2,…):
'''
DocString
'''
Anweisungsblock
eingerückt
return ergebnis
 Funktionen innerhalb von Funktionen sind möglich
 Zugriff auf globale Variablen auf Wunsch möglich.
def funktionsname(parameter1, parameter2,…):
global x
...
return ergebnis
F UNKTIONEN : W ISSENSWERTES ZU PARAMETERN
 "Call by Value" für immutable Daten
(einfache Datentypen, Tupel)
 "Call by Reference" für mutable Daten
(Listen)
F UNKTIONEN : W ISSENSWERTES ZU PARAMETERN
optionale
Parameter
F UNKTIONEN : W ISSENSWERTES ZU PARAMETERN
bezeichnete Parameter
F UNKTIONEN : R ÜCKGABEWERT ( E )
 None bei fehlendem return
 Mit einem Trick können beliebig viele Werte
innerhalb eines Tupels zurückgegeben
werden.
F UNKTIONEN : D OC S TRINGS
 Docstrings dienen als Hilfetext bei Nutzung
von Funktionen.
F UNKTIONSBIBLIOTHEKEN
 Sammlungen eigener wiederverwendbarer
Funktionen können in einer für Python
erreichbaren *.py-Datei gespeichert werden.
 Der Nutzung in Programmen ist möglich in
der Form:
import meineFunktionen as mf
n = mf.gibZahlEin(von,bis)
F RÖSCHE UND
S CHILDKRÖTEN
GUI S GESTALTEN
mit tkinter
A BITUR 2009, A UFGABE 1.2.1/1.2.2
Um die Sicherheit in dem Möbelhaus und den
Warenlagern zu gewährleisten, müssen die
Mitarbeiter im Eingangsbereich einen
Zugangscode eingeben. Dieser Zugangscode
soll die vierstellige Zahl 4583 sein.
 Entwickeln Sie ein Programm in der im
Unterricht verwendeten Programmiersprache,
das den eingegebenen Zugangscode auf
Richtigkeit prüft. (4)
 Erweitern Sie das Programm so, dass nach
einer dreimaligen Prüfung der Vorgang
abgebrochen wird. (2)
G UI MIT TKINTER ERSTELLEN
 tkinter ist Standardbibliothek für PythonGUI
 Derzeit v. a. textbasierte Gestaltung der GUI
– Formdesigner wie in Delphi und Java
fehlen noch.
 Viele andere Tools stehen noch nicht für
Python 3.x zur Verfügung.
A BI 2009
}
1.2.1/1.2.2
A BI 2009
}
1.2.1/1.2.2
B EMERKUNGEN ZUR OOP
K LASSENDEFINITION
 Verzicht auf Schlüsselwörter für
Sichtbarkeitsattribute
attribut
(public)
_attribut
(protected – Empfehlung)
__attribut
(private)
 Häufig auch in der Form
attribut
(public)
_attribut_
(protected – Empfehlung)
__attribut__ (private)
 Methoden analog
K LASSENDEFINITION
 Verzicht auf explizite Deklaration der
Attribute – stattdessen Deklaration durch
Wertzuweisung im Konstruktor
__init__(self, parameter)
 Alle Objektmethoden und –attribute
werden mit dem Präfix self angesprochen.
 Alle in der Klasse definierten Variablen sind
Klassenattribute (Präfix: Klassenname)
OOP: D AS K ONTOBEISPIEL IN P YTHON
Klassendefinition
 Klassenvariable
 Konstruktor
 Destruktor
OOP: D AS K ONTOBEISPIEL IN P YTHON
 getter
 setter
OOP: D AS K ONTOBEISPIEL IN P YTHON
 weitere
Methoden
OOP: D AS K ONTOBEISPIEL IN P YTHON
 Erzeugen von
Objekten
 Aufruf der
Methoden
Herunterladen