![Page 1: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/1.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Module und Objekte in Python
Prof. Dr. Rudiger Weis
Beuth Hochschule fur Technik Berlin
1 / 43
![Page 2: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/2.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
1 Module
2 Objekt Orientiertes Programmieren
3 Vererbung
4 Mehrfach-Vererbung
5 Tkinter
2 / 43
![Page 3: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/3.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Module
Module
Python bietet die Moglichkeit, Definitionen als Modul in einerDatei abzulegen, um diese in einem Skript oder einer interaktivenSitzung mit dem Interpreter zu benutzen.
3 / 43
![Page 4: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/4.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
import
import
import <modulename>
Importiert gesamtes Modul
Zugriff uber modulname.funktionsnam
Module-Name in globaler Variable name
Verwendung als Modul oder Programm
i f n a m e == ’ m a i n ’ :main ( ) # Sta r t e Programm
Suchreihenfolge nach Umgebungsvariable PYTHONPATH
4 / 43
![Page 5: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/5.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
from ... import ..
from ... import ...
from <modulename> import <funktionsame> [,name,...]
Importiert Funktionen aus <modulename>
Einbringung in lokalen Namensraum
5 / 43
![Page 6: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/6.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Vermeide from ... import *
Vermeide from ... import *
from <modulename> import *
Verunreinigung des Namensraum
6 / 43
![Page 7: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/7.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Python Conventions
Style Guide for Python Code,http://www.python.org/dev/peps/pep-0008/
single leading underscore:
weak ”internal use” indicator.
E.g. ”from M import *” does not import objects whose namestarts with an underscore.
7 / 43
![Page 8: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/8.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
reload
reload
reload <modulename>
Erzwingt Neuladen von Module <modulename>
Module werden nur einmal bei ersten Laden ausgefuhrt.
Explizites Neuladen nach Code-Anderung.
8 / 43
![Page 9: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/9.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Objekt Orientiertes Programmieren
Objekt Orientiertes Programmieren
Kapselung
Vererbung
Polymorphie
9 / 43
![Page 10: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/10.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Objekt Orientiertes Python
Objekt Orientierter Programmierung (OOP) optional
Elegant: Minimum an neuer Syntax und Semantik
Beeinflusst von Smalltalk und Modula 3
Mehrfach-Vererbung
10 / 43
![Page 11: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/11.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Alles public und virtual
public und virtual
Alle Klassen in Python sind gemass C++ Terminologiepublic und virtual.
public Kein Zugriffsschutz
virtual Dynamisches Binden
11 / 43
![Page 12: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/12.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Name Mangeling
Style Guide for Python Code,http://www.python.org/dev/peps/pep-0008/
mangle me
Python mangles names using two leading underscores with theclass name: if class Foo has an attribute named a, it cannot beaccessed by Foo. a.
An insistent user could still gain access by callingFoo. Foo a.
Generally, double leading underscores should be used only toavoid name conflicts with attributes in classes designed to besubclassed.
12 / 43
![Page 13: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/13.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Namemangling
c l a s s Test :def p r i v a t e s ( s e l f ) :
passdef o e f f e n t l i c h ( s e l f ) :
pass
p r i n t d i r ( Test )
# L i e f e r t :# [ ’ T e s t p r i v a t e s ’ , ’ d o c ’ , ’ modu l e ’ , ’ o e f f e n t l i c h ’ ]
13 / 43
![Page 14: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/14.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
class
class
c l a s s <k lassenname >:[< d o c s t r i n g >]
<d e f i n i t i o n e n >
class Anweisung erstellt Klassen-Objekt
Namensraum mit Methoden und Attributen
Schablonen fur Objekte
Methode init entspricht Konstruktor
14 / 43
![Page 15: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/15.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Instanz-Objekte
Jedes Instanz-Objekt besitzt einen eigenen Namensraum.
Zugriff auf Klassen-Attribute und -Methoden
Zuweisungen mittels self. in Klassenmethoden andernInstanzobjekt.
15 / 43
![Page 16: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/16.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Beispiel: Klasse- und Instanz-Variablen
>>> c l a s s Kla s s e :. . . v a r i a b l e = ” K l a s s e ”. . . def i n i t ( s e l f , name=”NN” ) :. . . s e l f . v a r i a b l e = name. . . def z e i g eV a r i a b l e n ( s e l f ) :. . . p r i n t ” K l a s s e : ” , K l a s s e . v a r i a b l e ,. . . p r i n t ” , I n s t a n z : ” , s e l f . v a r i a b l e. . .>>> ob j e k t = K l a s s e ( ”Spam” )>>> Kla s s e . v a r i a b l e’ K l a s s e ’>>> ob j e k t . v a r i a b l e’Spam ’>> ob j e k t . z e i g eV a r i a b l e n ( )K l a s s e : K l a s s e , I n s t a n z : Spam
16 / 43
![Page 17: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/17.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Klasse- und Instanz-Variablen Dictonaries
>>> p r i n t ob j e k t . d i c t{ ’ v a r i a b l e ’ : ’Spam ’ }>>> import p p r i n t>>> p p r i n t . p p r i n t ( K l a s s e . d i c t ){ ’ d o c ’ : None ,’ i n i t ’ : < f u n c t i o n i n i t a t 0 xb7dc1f0c >,’ modu l e ’ : ’ ma i n ’ ,’ v a r i a b l e ’ : ’ K l a s s e ’ ,’ z e i g eV a r i a b l e n ’ : < f u n c t i o n z e i g eV a r i a b l e n at 0 xb7dc1f44>}
17 / 43
![Page 18: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/18.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Namensraume
Namensraume
Qualifizierte Namen
Nicht qualifizierte Namen
18 / 43
![Page 19: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/19.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Beispiel: dir() Modul
>>> d i r<b u i l t −i n f u n c t i o n d i r >>>> d i r ( )[ ’ b u i l t i n s ’ , ’ d o c ’ , ’ n a m e ’ ]>>> c l a s s Dummy:. . . v a r i a b l e = ” K l a s s e n v a r i a b l e ”. . . def i n i t ( s e l f ) :. . . pass. . . def methode ( s e l f ) :. . . pass. . .>>> d i r ( )[ ’Dummy ’ , ’ b u i l t i n s ’ , ’ d o c ’ , ’ n a m e ’ ]
19 / 43
![Page 20: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/20.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Beispiel: dir() Klasse und Instanz
>>> d i r (Dummy)[ ’ d o c ’ , ’ i n i t ’ , ’ modu l e ’ , ’ methode ’ , ’ v a r i a b l e ’ ]>>> i n s t a n z = Dummy( )>>> d i r ( )[ ’Dummy ’ , ’ b u i l t i n s ’ , ’ d o c ’ , ’ name ’ , ’ i n s t a n z ’ ]>>> d i r ( i n s t a n z )[ ’ d o c ’ , ’ i n i t ’ , ’ modu l e ’ , ’ methode ’ , ’ v a r i a b l e ’ ]
20 / 43
![Page 21: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/21.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Operatoren-Uberladung I
init Konstruktor <Klasse>
del Desktruktor
getattr Qualifikation
getitem Indizierung (auf fur in-Operator)
setitem Indexzuweisung
getslice Teilbereichsbildung
len Lange
cmp Vergleich
21 / 43
![Page 22: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/22.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Operatoren-Uberladung II
eq Gleichheit (==)
ne Ungleichheit (!=)
radd Rechtsseitiger Operator +
add Operator +
or Operator —
repr Druckdarstellung
call Funktionsaufrufe
22 / 43
![Page 23: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/23.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Beispiel: Restklassen
c l a s s Modulo :” Rechnen i n R e s t k l a s s e n ”
def i n i t ( s e l f , z a h l , mod ) :s e l f . mod = mods e l f . z a h l = z a h l % mod
def r e p r ( s e l f ) :return s t r ( s e l f . z a h l ) + ” mod ” + s t r ( s e l f . mod)
def a d d ( s e l f , z ) :m = Modulo ( s e l f . z a h l , s e l f . mod)m. z a h l = (m. z a h l + z ) % m. modreturn m
23 / 43
![Page 24: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/24.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Beispiel: Restklassen rechnen
>>> a = Modulo (4 , 7 )>>> b = Modulo (11 ,7 )>>> a , b(4 mod 7 , 4 mod 7)>>> a + 52 mod 7>>> d i r (Modulo )[ ’ a d d ’ , ’ d o c ’ , ’ i n i t ’ , ’ modu l e ’ , ’ r e p r ’ ]
24 / 43
![Page 25: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/25.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Vererbung
Vererbung
c l a s s <k lassenname> [(< o b e r k l a s s e > ] :[< d o c s t r i n g >]
<d e f i n i t i o n e n >
Oberklasse in ()
Suchreihenfolge: Instanz, Klasse, Oberklasse
25 / 43
![Page 26: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/26.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Beispiel: Stack Klasse
c l a s s Stack :
def i n i t ( s e l f ) : # Kons t ruk to rs e l f . l i s t e = [ ]
def i sEmpty ( s e l f ) :re tu rn l e n ( s e l f . l i s t e ) == 0
def push ( s e l f , e l ement ) :s e l f . l i s t e . append ( e l ement )
def pop ( s e l f ) :i f not s e l f . i sEmpty ( ) :
de l s e l f . l i s t e [−1]
def top ( s e l f ) :i f not s e l f . i sEmpty ( ) :
re tu rn s e l f . l i s t e [−1]
26 / 43
![Page 27: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/27.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Beispiel: Stack Instanz
>>> Stack ( ) # Kla s s e< m a i n . Stack i n s t a n c e at 0 xb69c6f8c>>>> s = Stack ( ) # In s t a n z Objekt s>>> p r i n t s . i sEmpty ( )True>>> s . push ( 4 2 )>>> s . top ( )42>>> p r i n t s . i sEmpty ( )F a l s e>>> s . pop ( )>>> s . top ( )>>> p r i n t s . i sEmpty ( )True
27 / 43
![Page 28: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/28.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Beispiel Vererbung: Stack Erweiterung
from s t a c k import Stack
c l a s s P e e p i n g S t a c k ( Stack ) :
def peep ( s e l f , i ) :return s e l f . l i s t e [ i ]
28 / 43
![Page 29: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/29.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Beispiel Vererbung: Stack Erweiterung
>>> debug = P e e p i n g S t a c k ( )>>> debug . push ( 1 )>>> debug . push ( 2 )>>> debug . top ( )2>>> debug . peep ( 0 )1>>> debug . peep ( 1 )2
29 / 43
![Page 30: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/30.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Mehrfach-Vererbung
Mehrfach-Vererbung
c l a s s <k lassenname> [(< o b e r k l 1 > [ , <o b e r k l 2 > . . . ] ) ] :[< d o c s t r i n g >]
<d e f i n i t i o n e n >
Suchreihenfolge: Erst Tiefensuche, links nach rechts
Vorsichtig benutzen
30 / 43
![Page 31: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/31.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Beispiel: Mehrfach-Vererbung
from s t a c k import Stack
c l a s s P e e p i n g S t a c k ( Stack ) :def peep ( s e l f , i ) :
return s e l f . l i s t e [ i ]
c l a s s Spam :def top ( s e l f ) : p r i n t ”Spam ! ”
c l a s s Mehrfach ( Peep ingStack , Spam ) :pass
c l a s s MehrfachX (Spam , P e e p i n g S t a c k ) :pass
31 / 43
![Page 32: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/32.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Beispiel: Reihenfolge Mehrfach Vererbung
>>> a = Mehrfach ( )>>> a . push ( 4 2 )>>> a . top ( )42>>> b = MehrfachX ( )>>> b . push ( 4 2 )>>> b . top ( )Spam !>>> b . peep ( 0 )42
32 / 43
![Page 33: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/33.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Tkinter
Tkinter
Stabiles, plattformubergreifendes GUI Toolkit
Wrapper des Tk GUI-Toolkits
http://docs.python.org/lib/module-Tkinter.html
Alternativen: PyGTK, PyQt, . . .
33 / 43
![Page 34: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/34.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Widgets
GUI-Element
Klassen
Callback uber command Argument
Argumentubergabe uber Schlusselwort Argumente
34 / 43
![Page 35: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/35.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Vordefinierter Widgets
Toplevel: Eigenes Fenster in der GUI
Label: Fester Text
Entry: Eingaezeile
Text: Einfacher Texteditor
Checkbutton: Knopf zum anwahlen
PhotoImage: Bild
Scrollbar: Scroll-Leiste
Listbox: Liste mit Auswahlmoglichkeit
Menu: Pulldown- oder Popup-Menus
Menubar: Menuzeile
35 / 43
![Page 36: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/36.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Container
Widget Hierarchie ausgehend von Toplevel oder Tk
Vaterubergabe als erstes Argument
Neues Widget wird in der Regel im Vater-Widget dargestellt.
36 / 43
![Page 37: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/37.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Geometry Manager
Ein Geometry Manager steuert die Position und Grosse derWidgets.
pack Einfaches Packen in horizontaler oder vertikaler Richtung
grid Positionierung nach Zeilen und Spalten
place Positionierung mittels fester Koordinaten
37 / 43
![Page 38: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/38.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
pack Geometry Manager
Gebrauchliche Optionen des Geometry Managers
side=
Tkinter.TOP Widgets ubereinander(default)TKinet.LEFT Widgets nebeneinander
expand= falls das Vater-Widget vergrossert wird
1 Sohn-Widgets werden mit verteilt0 Sohn-Widgets bleiben zusammen
fill= Fullt Vater-Widget
Tkinter.NONE nichtTkinter.X horizontalTkinter.Y vertikalTkinter.BOTH horizontal und vertikal
38 / 43
![Page 39: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/39.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Tkinter Hallo Fenster
import Tk i n t e r
c l a s s Ha l l o ( Tk i n t e r . Tk ) :
def i n i t ( s e l f ) :Tk i n t e r . Tk . i n i t ( s e l f )Tk i n t e r . Button ( s e l f , t e x t = ”Quit ” , command = s e l f . q u i t ) . pack ( )Tk i n t e r . Button ( s e l f , t e x t = ” Ha l l o ” , command = s e l f . h a l l o ) . pack ( )
def h a l l o ( s e l f ) :r o o t = Tk i n t e r . Tk ( )Tk i n t e r . Labe l ( root , t e x t = ’ S e l b e r Ha l l o ! ’ ) . pack ( )r oo t . main loop ( )
F en s t e r = Ha l l o ( )F en s t e r . main loop ( )
39 / 43
![Page 40: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/40.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Events
<Button-1> Linker Maustaste wurde gedruckt.
<Double-Button-2> Rechte Mausknopf wurde doppelgeklickt
<Enter> Mauszeiger wurde in Feld des Widgets gefuhrt
<Key> eTaste wurde gedruckt
<Configure> Widget wurde umkonfiguriert
40 / 43
![Page 41: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/41.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
Eingabefeld
from Tk i n t e r import ∗
c l a s s App( Frame ) :” E i n g a b e f e l d b e i s p i e l aus Python L i b r a r y Re f e r en c e ”
def i n i t ( s e l f , master=None ) :Frame . i n i t ( s e l f , master )s e l f . pack ( )s e l f . e n t r y t h i n g y = Entry ( )s e l f . e n t r y t h i n g y . pack ( )# here i s the a p p l i c a t i o n v a r i a b l es e l f . c on t en t s = S t r i n gVa r ( )# se t i t to some va l u es e l f . c on t en t s . s e t ( ” t h i s i s a v a r i a b l e ” )# t e l l the e n t r y w idget to watch t h i s v a r i a b l es e l f . e n t r y t h i n g y [ ” t e x t v a r i a b l e ” ] = s e l f . c on t en t s# and he r e we get a c a l l b a c k when the u s e r h i t s r e t u r n .# we w i l l have the program p r i n t out the v a l u e o f the# a p p l i c a t i o n v a r i a b l e when the u s e r h i t s r e t u r ns e l f . e n t r y t h i n g y . b ind ( ’<Key−Return>’ , s e l f . p r i n t c o n t e n t s )
def p r i n t c o n t e n t s ( s e l f , e ven t ) :p r i n t ” h i . c on t en t s o f e n t r y i s now −−−−>” , s e l f . c on t en t s . ge t ( )
e i n = App ( )e i n . main loop ( )
41 / 43
![Page 42: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/42.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
PyGTK und Glade
PyGTK
Gnome
http://www.gnome.org/
GTK+ The GIMP Toolkit
http://www.gtk.org/
PyGTK: GTK+ for Python
http://www.pygtk.org/
Glade - a User Interface Builder for GTK+ and GNOME
http://glade.gnome.org/
42 / 43
![Page 43: Module und Objekte in Python - Beuth Hochschule für ...public.beuth-hochschule.de/~rweis/vorlesungen/Betriebssysteme/Weis... · ModuleObjekt Orientiertes ProgrammierenVererbungMehrfach-VererbungTkinter](https://reader030.vdocuments.net/reader030/viewer/2022021514/5b14d9557f8b9a54488c759d/html5/thumbnails/43.jpg)
Module Objekt Orientiertes Programmieren Vererbung Mehrfach-Vererbung Tkinter
c©opyleft
c©opyleft
Erstellt mit Freier Software
c© Rudiger Weis, Berlin 2005 – 2011
unter der GNU Free Documentation License.
43 / 43