SlideShare ist ein Scribd-Unternehmen logo
1 von 214
Python                 OOP                          PyDev                  Fazit




                   Alternative objektorientiere
                     Programmiersprachen
                             Python & PyDev


                             David Robakowski

                             Fachhochschule Wedel


                               Juli 11, 2009




David Robakowski                                            Fachhochschule Wedel
Python & PyDev
Python                        OOP          PyDev                      Fazit




Gliederung



         1 Python                   2 OOP
             Geschichte                 Objektsystem
             Eigenschaften              Klassen
             Sprachumfang               Vererbung
             Paradigmen                 Metaklassen
             Einsatzgebiete         3 PyDev
             Vor- und Nachteile         Zu PyDev
                                    4 Fazit
                                        Mein Fazit




David Robakowski                                       Fachhochschule Wedel
Python & PyDev
Python                        OOP          PyDev                      Fazit

Geschichte



Gliederung



         1 Python                   2 OOP
             Geschichte                 Objektsystem
             Eigenschaften              Klassen
             Sprachumfang               Vererbung
             Paradigmen                 Metaklassen
             Einsatzgebiete         3 PyDev
             Vor- und Nachteile         Zu PyDev
                                    4 Fazit
                                        Mein Fazit




David Robakowski                                       Fachhochschule Wedel
Python & PyDev
Python                          OOP                    PyDev                         Fazit

Geschichte



Zur Geschichte von Python
                 Entwickelt Anfang der 90er Jahre von Guido van Rossum am
                 Zentrum für Mathematik und Informatik in Amsterdam




David Robakowski                                                      Fachhochschule Wedel
Python & PyDev
Python                          OOP                     PyDev                          Fazit

Geschichte



Zur Geschichte von Python
                 Entwickelt Anfang der 90er Jahre von Guido van Rossum am
                 Zentrum für Mathematik und Informatik in Amsterdam
                 Wurde ursprünglich für das verteilte Betriebssystem Amoeba
                 entwickelt, als Nachfolger für die Lehrsprache ABC




David Robakowski                                                        Fachhochschule Wedel
Python & PyDev
Python                          OOP                     PyDev                          Fazit

Geschichte



Zur Geschichte von Python
                 Entwickelt Anfang der 90er Jahre von Guido van Rossum am
                 Zentrum für Mathematik und Informatik in Amsterdam
                 Wurde ursprünglich für das verteilte Betriebssystem Amoeba
                 entwickelt, als Nachfolger für die Lehrsprache ABC
                 Namensherkunft: Britische Komikergruppe „Monty Python“




David Robakowski                                                        Fachhochschule Wedel
Python & PyDev
Python                        OOP          PyDev                      Fazit

Eigenschaften



Gliederung



         1 Python                   2 OOP
             Geschichte                 Objektsystem
             Eigenschaften              Klassen
             Sprachumfang               Vererbung
             Paradigmen                 Metaklassen
             Einsatzgebiete         3 PyDev
             Vor- und Nachteile         Zu PyDev
                                    4 Fazit
                                        Mein Fazit




David Robakowski                                       Fachhochschule Wedel
Python & PyDev
Python             OOP                    PyDev                       Fazit

Eigenschaften



Eigenschaften von Python
                    Simpel Schnell, einfach und
                           übersichtlich(Einrückung)
                           programmieren




David Robakowski                                       Fachhochschule Wedel
Python & PyDev
Python                     OOP                    PyDev                       Fazit

Eigenschaften



Eigenschaften von Python
                            Simpel Schnell, einfach und
                                   übersichtlich(Einrückung)
                                   programmieren
         Höhere Programmiersprache Garbage-Collector




David Robakowski                                               Fachhochschule Wedel
Python & PyDev
Python                     OOP                    PyDev                         Fazit

Eigenschaften



Eigenschaften von Python
                            Simpel Schnell, einfach und
                                   übersichtlich(Einrückung)
                                   programmieren
         Höhere Programmiersprache Garbage-Collector
                       Bibliotheken Umfangreiche Bibliotheken aus den
                                    unterschiedlichsten Bereichen: z.B.
                                    Datenbanken, Audio/Video, GUI, Web,
                                    ...




David Robakowski                                                 Fachhochschule Wedel
Python & PyDev
Python                     OOP                     PyDev                          Fazit

Eigenschaften



Eigenschaften von Python
                            Simpel Schnell, einfach und
                                   übersichtlich(Einrückung)
                                   programmieren
         Höhere Programmiersprache Garbage-Collector
                       Bibliotheken Umfangreiche Bibliotheken aus den
                                    unterschiedlichsten Bereichen: z.B.
                                    Datenbanken, Audio/Video, GUI, Web,
                                    ...
                           Portabel Linux/Unix, Windows, Mac, OS 2, ...




David Robakowski                                                   Fachhochschule Wedel
Python & PyDev
Python                     OOP                      PyDev                          Fazit

Eigenschaften



Eigenschaften von Python
                            Simpel Schnell, einfach und
                                   übersichtlich(Einrückung)
                                   programmieren
         Höhere Programmiersprache Garbage-Collector
                       Bibliotheken Umfangreiche Bibliotheken aus den
                                    unterschiedlichsten Bereichen: z.B.
                                    Datenbanken, Audio/Video, GUI, Web,
                                    ...
                           Portabel Linux/Unix, Windows, Mac, OS 2, ...
                        Interpretiert Zwischencode wird von Interpreter
                                      ausgeführt




David Robakowski                                                    Fachhochschule Wedel
Python & PyDev
Python                       OOP                     PyDev                  Fazit

Eigenschaften



Eigenschaften von Python II
         Objektorientiert Sehr flexibel und mächtig




David Robakowski                                             Fachhochschule Wedel
Python & PyDev
Python                            OOP                     PyDev                         Fazit

Eigenschaften



Eigenschaften von Python II
         Objektorientiert Sehr flexibel und mächtig
                 Erweiterbar z.B. durch C/C++ Bibliotheken, falls mehr
                             Performance benötigt wird




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                           OOP                    PyDev                         Fazit

Eigenschaften



Eigenschaften von Python II
         Objektorientiert Sehr flexibel und mächtig
                 Erweiterbar z.B. durch C/C++ Bibliotheken, falls mehr
                              Performance benötigt wird
                 Integrierbar Integration in andere Programmierumgebungen wie
                              z.B. .Net, Java, COM, CORBA, C und C++




David Robakowski                                                       Fachhochschule Wedel
Python & PyDev
Python                           OOP                    PyDev                         Fazit

Eigenschaften



Eigenschaften von Python II
         Objektorientiert Sehr flexibel und mächtig
                 Erweiterbar z.B. durch C/C++ Bibliotheken, falls mehr
                              Performance benötigt wird
                 Integrierbar Integration in andere Programmierumgebungen wie
                              z.B. .Net, Java, COM, CORBA, C und C++
                   Dynamik Dynamik durch Möglichkeit des Mischens
                           unterschiedlicher Programmierparadigmen




David Robakowski                                                       Fachhochschule Wedel
Python & PyDev
Python                           OOP                    PyDev                         Fazit

Eigenschaften



Eigenschaften von Python II
         Objektorientiert Sehr flexibel und mächtig
                 Erweiterbar z.B. durch C/C++ Bibliotheken, falls mehr
                              Performance benötigt wird
                 Integrierbar Integration in andere Programmierumgebungen wie
                              z.B. .Net, Java, COM, CORBA, C und C++
                   Dynamik Dynamik durch Möglichkeit des Mischens
                           unterschiedlicher Programmierparadigmen
            Open Source Große Community




David Robakowski                                                       Fachhochschule Wedel
Python & PyDev
Python                        OOP          PyDev                      Fazit

Sprachumfang



Gliederung



         1 Python                   2 OOP
             Geschichte                 Objektsystem
             Eigenschaften              Klassen
             Sprachumfang               Vererbung
             Paradigmen                 Metaklassen
             Einsatzgebiete         3 PyDev
             Vor- und Nachteile         Zu PyDev
                                    4 Fazit
                                        Mein Fazit




David Robakowski                                       Fachhochschule Wedel
Python & PyDev
Python                      OOP             PyDev                             Fazit

Sprachumfang



Sprachumfang

         Sprachelemente

                 False            else              lambda
                 None             except            nonlocal
                 True             exec              not
                 and              finally           or
                 assert           for               pass
                 break            from              raise
                 class            global            return
                 continue         if                try
                 def              import            while
                 del              in                with
                 elif             is                yield



David Robakowski                                               Fachhochschule Wedel
Python & PyDev
Python                            OOP                      PyDev                            Fazit

Sprachumfang



Datentypen
                 Python ist dynamisch getypt, es gibt also keine explizite
                 Datentypdeklaration




David Robakowski                                                             Fachhochschule Wedel
Python & PyDev
Python                            OOP                      PyDev                            Fazit

Sprachumfang



Datentypen
                 Python ist dynamisch getypt, es gibt also keine explizite
                 Datentypdeklaration
                 ...jedoch streng getypt




David Robakowski                                                             Fachhochschule Wedel
Python & PyDev
Python                            OOP                      PyDev                            Fazit

Sprachumfang



Datentypen
                 Python ist dynamisch getypt, es gibt also keine explizite
                 Datentypdeklaration
                 ...jedoch streng getypt
                 Alle Datentypen sind Objekte




David Robakowski                                                             Fachhochschule Wedel
Python & PyDev
Python                            OOP                      PyDev                            Fazit

Sprachumfang



Datentypen
                 Python ist dynamisch getypt, es gibt also keine explizite
                 Datentypdeklaration
                 ...jedoch streng getypt
                 Alle Datentypen sind Objekte
                 Werden auch built-in types bezeichnet




David Robakowski                                                             Fachhochschule Wedel
Python & PyDev
Python                            OOP                      PyDev                            Fazit

Sprachumfang



Datentypen
                 Python ist dynamisch getypt, es gibt also keine explizite
                 Datentypdeklaration
                 ...jedoch streng getypt
                 Alle Datentypen sind Objekte
                 Werden auch built-in types bezeichnet
                 Die Klasse object bildet dabei die Oberklasse von allen Typen
                 und new-style Klassen




David Robakowski                                                             Fachhochschule Wedel
Python & PyDev
Python                            OOP                       PyDev                           Fazit

Sprachumfang



Datentypen II
                 Python besitzt für die unterschiedlichsten Gebiete „built-in types“:




David Robakowski                                                             Fachhochschule Wedel
Python & PyDev
Python                            OOP                       PyDev                           Fazit

Sprachumfang



Datentypen II
                 Python besitzt für die unterschiedlichsten Gebiete „built-in types“:
                   Numerische: int, float, komplexe Zahlen




David Robakowski                                                             Fachhochschule Wedel
Python & PyDev
Python                            OOP                       PyDev                           Fazit

Sprachumfang



Datentypen II
                 Python besitzt für die unterschiedlichsten Gebiete „built-in types“:
                   Numerische: int, float, komplexe Zahlen
                    Sequenzen: string, tupel, list




David Robakowski                                                             Fachhochschule Wedel
Python & PyDev
Python                            OOP                       PyDev                           Fazit

Sprachumfang



Datentypen II
                 Python besitzt für die unterschiedlichsten Gebiete „built-in types“:
                   Numerische: int, float, komplexe Zahlen
                    Sequenzen: string, tupel, list
                       Mengen: set, frozenset




David Robakowski                                                             Fachhochschule Wedel
Python & PyDev
Python                            OOP                       PyDev                           Fazit

Sprachumfang



Datentypen II
                 Python besitzt für die unterschiedlichsten Gebiete „built-in types“:
                   Numerische: int, float, komplexe Zahlen
                    Sequenzen: string, tupel, list
                       Mengen: set, frozenset
                   Dictionaries: {key: value,...}




David Robakowski                                                             Fachhochschule Wedel
Python & PyDev
Python                            OOP                       PyDev                           Fazit

Sprachumfang



Datentypen II
                 Python besitzt für die unterschiedlichsten Gebiete „built-in types“:
                   Numerische: int, float, komplexe Zahlen
                    Sequenzen: string, tupel, list
                       Mengen: set, frozenset
                   Dictionaries: {key: value,...}
                 Verschiedenes: None, Callable, Boolean




David Robakowski                                                             Fachhochschule Wedel
Python & PyDev
Python                             OOP                       PyDev                           Fazit

Sprachumfang



Code Beispiel


         Connection String Builder [2]
         def buildConnectionString(params):
             """Build a connection string from a dictionary of parameters.

                 Returns string."""
                 return ";".join(["%s=%s" % (k, v) for k, v in params.items()])

         if __name__ == "__main__":
             myParams = {"server":"mpilgrim", 
                         "database":"master", 
                         "uid":"sa", 
                         "pwd":"secret" 
                         }
             print buildConnectionString(myParams)




David Robakowski                                                              Fachhochschule Wedel
Python & PyDev
Python                        OOP          PyDev                      Fazit

Paradigmen



Gliederung



         1 Python                   2 OOP
             Geschichte                 Objektsystem
             Eigenschaften              Klassen
             Sprachumfang               Vererbung
             Paradigmen                 Metaklassen
             Einsatzgebiete         3 PyDev
             Vor- und Nachteile         Zu PyDev
                                    4 Fazit
                                        Mein Fazit




David Robakowski                                       Fachhochschule Wedel
Python & PyDev
Python                             OOP        PyDev                  Fazit

Paradigmen



Programmierparadigmen
                 Vollständige Unterstützung




David Robakowski                                      Fachhochschule Wedel
Python & PyDev
Python                            OOP                      PyDev                           Fazit

Paradigmen



Programmierparadigmen
                 Vollständige Unterstützung
                     Strukturierter Programmierung Module, Prozeduren und Funktionen




David Robakowski                                                            Fachhochschule Wedel
Python & PyDev
Python                            OOP                      PyDev                           Fazit

Paradigmen



Programmierparadigmen
                 Vollständige Unterstützung
                     Strukturierter Programmierung Module, Prozeduren und Funktionen
                 Objektorientierter Programmierung Klassen, Vererbung, spezielle
                                                   Methoden...




David Robakowski                                                            Fachhochschule Wedel
Python & PyDev
Python                            OOP                      PyDev                           Fazit

Paradigmen



Programmierparadigmen
                 Vollständige Unterstützung
                     Strukturierter Programmierung Module, Prozeduren und Funktionen
                 Objektorientierter Programmierung Klassen, Vererbung, spezielle
                                                   Methoden...
                 Es gibt Spracheigenschaften aus




David Robakowski                                                            Fachhochschule Wedel
Python & PyDev
Python                            OOP                      PyDev                           Fazit

Paradigmen



Programmierparadigmen
                 Vollständige Unterstützung
                     Strukturierter Programmierung Module, Prozeduren und Funktionen
                 Objektorientierter Programmierung Klassen, Vererbung, spezielle
                                                   Methoden...
                 Es gibt Spracheigenschaften aus
                     Funktionaler Programmierung Funktionen, Blöcke, Rekursion,
                                                 Listen...




David Robakowski                                                            Fachhochschule Wedel
Python & PyDev
Python                            OOP                      PyDev                           Fazit

Paradigmen



Programmierparadigmen
                 Vollständige Unterstützung
                     Strukturierter Programmierung Module, Prozeduren und Funktionen
                 Objektorientierter Programmierung Klassen, Vererbung, spezielle
                                                   Methoden...
                 Es gibt Spracheigenschaften aus
                     Funktionaler Programmierung Funktionen, Blöcke, Rekursion,
                                                 Listen...
                 Python ist eine Multiparadigmen Sprache




David Robakowski                                                            Fachhochschule Wedel
Python & PyDev
Python                            OOP                       PyDev                           Fazit

Paradigmen



Programmierparadigmen
                 Vollständige Unterstützung
                     Strukturierter Programmierung Module, Prozeduren und Funktionen
                 Objektorientierter Programmierung Klassen, Vererbung, spezielle
                                                   Methoden...
                 Es gibt Spracheigenschaften aus
                     Funktionaler Programmierung Funktionen, Blöcke, Rekursion,
                                                 Listen...
                 Python ist eine Multiparadigmen Sprache
                     erlaubt dem Benutzer das für das aktuelle Problem am besten
                     passende Paradigma zu wählen




David Robakowski                                                             Fachhochschule Wedel
Python & PyDev
Python                            OOP                       PyDev                           Fazit

Paradigmen



Programmierparadigmen
                 Vollständige Unterstützung
                     Strukturierter Programmierung Module, Prozeduren und Funktionen
                 Objektorientierter Programmierung Klassen, Vererbung, spezielle
                                                   Methoden...
                 Es gibt Spracheigenschaften aus
                     Funktionaler Programmierung Funktionen, Blöcke, Rekursion,
                                                 Listen...
                 Python ist eine Multiparadigmen Sprache
                     erlaubt dem Benutzer das für das aktuelle Problem am besten
                     passende Paradigma zu wählen
                     der Benutzer kann mixen




David Robakowski                                                             Fachhochschule Wedel
Python & PyDev
Python                        OOP          PyDev                      Fazit

Einsatzgebiete



Gliederung



         1 Python                   2 OOP
             Geschichte                 Objektsystem
             Eigenschaften              Klassen
             Sprachumfang               Vererbung
             Paradigmen                 Metaklassen
             Einsatzgebiete         3 PyDev
             Vor- und Nachteile         Zu PyDev
                                    4 Fazit
                                        Mein Fazit




David Robakowski                                       Fachhochschule Wedel
Python & PyDev
Python                                OOP                                PyDev                                Fazit

Einsatzgebiete



Einsatzgebiete

         Viele bekannte Firmen und Institutionen setzen auf Python und fördern diese. Dazu gehören z.B.:
                 Google, YouTube




David Robakowski                                                                               Fachhochschule Wedel
Python & PyDev
Python                                OOP                                PyDev                                Fazit

Einsatzgebiete



Einsatzgebiete

         Viele bekannte Firmen und Institutionen setzen auf Python und fördern diese. Dazu gehören z.B.:
                 Google, YouTube
                 NASA




David Robakowski                                                                               Fachhochschule Wedel
Python & PyDev
Python                                OOP                                PyDev                                Fazit

Einsatzgebiete



Einsatzgebiete

         Viele bekannte Firmen und Institutionen setzen auf Python und fördern diese. Dazu gehören z.B.:
                 Google, YouTube
                 NASA
                 ...




David Robakowski                                                                               Fachhochschule Wedel
Python & PyDev
Python                                OOP                                PyDev                                Fazit

Einsatzgebiete



Einsatzgebiete

         Viele bekannte Firmen und Institutionen setzen auf Python und fördern diese. Dazu gehören z.B.:
                 Google, YouTube
                 NASA
                 ...




David Robakowski                                                                               Fachhochschule Wedel
Python & PyDev
Python                                OOP                                PyDev                                   Fazit

Einsatzgebiete



Einsatzgebiete

         Viele bekannte Firmen und Institutionen setzen auf Python und fördern diese. Dazu gehören z.B.:
                 Google, YouTube
                 NASA
                 ...
         Eingesetzt wird Python hauptsächlich in den Bereichen:
                           Prototyping Mit Python lassen sich sehr schnell Prototypen erstellen




David Robakowski                                                                                  Fachhochschule Wedel
Python & PyDev
Python                                OOP                                PyDev                                   Fazit

Einsatzgebiete



Einsatzgebiete

         Viele bekannte Firmen und Institutionen setzen auf Python und fördern diese. Dazu gehören z.B.:
                 Google, YouTube
                 NASA
                 ...
         Eingesetzt wird Python hauptsächlich in den Bereichen:
                           Prototyping Mit Python lassen sich sehr schnell Prototypen erstellen
         Embedded Skripting Interface Wird z.B. bei OpenOffice, Blender, Maya, PyMOL, SPSS und GIMP
                                      verwendet




David Robakowski                                                                                  Fachhochschule Wedel
Python & PyDev
Python                                OOP                                PyDev                                   Fazit

Einsatzgebiete



Einsatzgebiete

         Viele bekannte Firmen und Institutionen setzen auf Python und fördern diese. Dazu gehören z.B.:
                 Google, YouTube
                 NASA
                 ...
         Eingesetzt wird Python hauptsächlich in den Bereichen:
                           Prototyping Mit Python lassen sich sehr schnell Prototypen erstellen
         Embedded Skripting Interface Wird z.B. bei OpenOffice, Blender, Maya, PyMOL, SPSS und GIMP
                                      verwendet
                          Web-Umfeld Hier gibt es zahlreiche Web-Frameworks mit denen sich
                                     in kürzester Zeit gut skalierbare Websites erstellen lassen.
                                     Dazu zählen etwa Frameworks wie:




David Robakowski                                                                                  Fachhochschule Wedel
Python & PyDev
Python                                OOP                                PyDev                                   Fazit

Einsatzgebiete



Einsatzgebiete

         Viele bekannte Firmen und Institutionen setzen auf Python und fördern diese. Dazu gehören z.B.:
                 Google, YouTube
                 NASA
                 ...
         Eingesetzt wird Python hauptsächlich in den Bereichen:
                           Prototyping Mit Python lassen sich sehr schnell Prototypen erstellen
         Embedded Skripting Interface Wird z.B. bei OpenOffice, Blender, Maya, PyMOL, SPSS und GIMP
                                      verwendet
                          Web-Umfeld Hier gibt es zahlreiche Web-Frameworks mit denen sich
                                     in kürzester Zeit gut skalierbare Websites erstellen lassen.
                                     Dazu zählen etwa Frameworks wie:
                                                    Django Ähnlich wie das bekannte Ruby On Rails
                                                           Framework




David Robakowski                                                                                  Fachhochschule Wedel
Python & PyDev
Python                                OOP                                PyDev                                   Fazit

Einsatzgebiete



Einsatzgebiete

         Viele bekannte Firmen und Institutionen setzen auf Python und fördern diese. Dazu gehören z.B.:
                 Google, YouTube
                 NASA
                 ...
         Eingesetzt wird Python hauptsächlich in den Bereichen:
                           Prototyping Mit Python lassen sich sehr schnell Prototypen erstellen
         Embedded Skripting Interface Wird z.B. bei OpenOffice, Blender, Maya, PyMOL, SPSS und GIMP
                                      verwendet
                          Web-Umfeld Hier gibt es zahlreiche Web-Frameworks mit denen sich
                                     in kürzester Zeit gut skalierbare Websites erstellen lassen.
                                     Dazu zählen etwa Frameworks wie:
                                                   Django Ähnlich wie das bekannte Ruby On Rails
                                                          Framework
                                               TurboGears Vergleichbar mit Django, soll jedoch besser für
                                                          große Projekte geeignet sein




David Robakowski                                                                                  Fachhochschule Wedel
Python & PyDev
Python                                OOP                                PyDev                                   Fazit

Einsatzgebiete



Einsatzgebiete

         Viele bekannte Firmen und Institutionen setzen auf Python und fördern diese. Dazu gehören z.B.:
                 Google, YouTube
                 NASA
                 ...
         Eingesetzt wird Python hauptsächlich in den Bereichen:
                           Prototyping Mit Python lassen sich sehr schnell Prototypen erstellen
         Embedded Skripting Interface Wird z.B. bei OpenOffice, Blender, Maya, PyMOL, SPSS und GIMP
                                      verwendet
                          Web-Umfeld Hier gibt es zahlreiche Web-Frameworks mit denen sich
                                     in kürzester Zeit gut skalierbare Websites erstellen lassen.
                                     Dazu zählen etwa Frameworks wie:
                                                  Django Ähnlich wie das bekannte Ruby On Rails
                                                         Framework
                                              TurboGears Vergleichbar mit Django, soll jedoch besser für
                                                         große Projekte geeignet sein
                                       Google App Engine Bis zu einem gewissen Traffic sogar
                                                         kostenloses Hosting



David Robakowski                                                                                  Fachhochschule Wedel
Python & PyDev
Python                        OOP          PyDev                      Fazit

Vor- und Nachteile



Gliederung



         1 Python                   2 OOP
             Geschichte                 Objektsystem
             Eigenschaften              Klassen
             Sprachumfang               Vererbung
             Paradigmen                 Metaklassen
             Einsatzgebiete         3 PyDev
             Vor- und Nachteile         Zu PyDev
                                    4 Fazit
                                        Mein Fazit




David Robakowski                                       Fachhochschule Wedel
Python & PyDev
Python                            OOP             PyDev                  Fazit

Vor- und Nachteile



Vor- und Nachteile



                 Vorteile:                    Kritik:
                     Schnelles Testen durch
                     interaktive Konsole
                     möglich




David Robakowski                                          Fachhochschule Wedel
Python & PyDev
Python                            OOP             PyDev                           Fazit

Vor- und Nachteile



Vor- und Nachteile



                 Vorteile:                    Kritik:
                     Schnelles Testen durch        Fehleranfällig durch
                     interaktive Konsole           dynamische Typisierung;
                     möglich                       Fehler werden erst zur
                                                   Laufzeit erkannt




David Robakowski                                                   Fachhochschule Wedel
Python & PyDev
Python                            OOP               PyDev                           Fazit

Vor- und Nachteile



Vor- und Nachteile



                 Vorteile:                      Kritik:
                     Schnelles Testen durch          Fehleranfällig durch
                     interaktive Konsole             dynamische Typisierung;
                     möglich                         Fehler werden erst zur
                     Klare, gut überschaubare        Laufzeit erkannt
                     und lesbare Syntax




David Robakowski                                                     Fachhochschule Wedel
Python & PyDev
Python                            OOP               PyDev                          Fazit

Vor- und Nachteile



Vor- und Nachteile



                 Vorteile:                      Kritik:
                     Schnelles Testen durch          Fehleranfällig durch
                     interaktive Konsole             dynamische Typisierung;
                     möglich                         Fehler werden erst zur
                     Klare, gut überschaubare        Laufzeit erkannt
                     und lesbare Syntax              Es werden
                                                     Sprachelemente wie z.B.
                                                     switch oder do-while
                                                     vermisst




David Robakowski                                                    Fachhochschule Wedel
Python & PyDev
Python                            OOP               PyDev                          Fazit

Vor- und Nachteile



Vor- und Nachteile



                 Vorteile:                      Kritik:
                     Schnelles Testen durch          Fehleranfällig durch
                     interaktive Konsole             dynamische Typisierung;
                     möglich                         Fehler werden erst zur
                     Klare, gut überschaubare        Laufzeit erkannt
                     und lesbare Syntax              Es werden
                     Sehr große                      Sprachelemente wie z.B.
                     Standardbibliothek              switch oder do-while
                                                     vermisst




David Robakowski                                                    Fachhochschule Wedel
Python & PyDev
Python                        OOP          PyDev                      Fazit

Objektsystem



Gliederung



         1 Python                   2 OOP
             Geschichte                 Objektsystem
             Eigenschaften              Klassen
             Sprachumfang               Vererbung
             Paradigmen                 Metaklassen
             Einsatzgebiete         3 PyDev
             Vor- und Nachteile         Zu PyDev
                                    4 Fazit
                                        Mein Fazit




David Robakowski                                       Fachhochschule Wedel
Python & PyDev
Python                            OOP                 PyDev                           Fazit

Objektsystem



Objektsystem


     Old-Style Objekt-Modell                 New-Style Objekt-Modell

               Auch bekannt als „classic“
               oder „legacy“ Objekt-Modell




David Robakowski                                                       Fachhochschule Wedel
Python & PyDev
Python                            OOP                    PyDev                           Fazit

Objektsystem



Objektsystem


     Old-Style Objekt-Modell                    New-Style Objekt-Modell

               Auch bekannt als „classic“
               oder „legacy“ Objekt-Modell
               In allen Python 2.x Versionen
               aus Kompatibilitätsgründen als
               Default eingestellt




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                            OOP                    PyDev                           Fazit

Objektsystem



Objektsystem


     Old-Style Objekt-Modell                    New-Style Objekt-Modell

               Auch bekannt als „classic“
               oder „legacy“ Objekt-Modell
               In allen Python 2.x Versionen
               aus Kompatibilitätsgründen als
               Default eingestellt
               Klassen-Objekt ist vom Typ
               <type ’class’>




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                            OOP                    PyDev                           Fazit

Objektsystem



Objektsystem


     Old-Style Objekt-Modell                    New-Style Objekt-Modell

               Auch bekannt als „classic“           Einfacher, regulärer und
               oder „legacy“ Objekt-Modell          mächtiger
               In allen Python 2.x Versionen
               aus Kompatibilitätsgründen als
               Default eingestellt
               Klassen-Objekt ist vom Typ
               <type ’class’>




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                            OOP                    PyDev                           Fazit

Objektsystem



Objektsystem


     Old-Style Objekt-Modell                    New-Style Objekt-Modell

               Auch bekannt als „classic“           Einfacher, regulärer und
               oder „legacy“ Objekt-Modell          mächtiger
               In allen Python 2.x Versionen        Klassen-Objekt ist von einem
               aus Kompatibilitätsgründen als       anderen Typ,
               Default eingestellt                  <type ’type’>
               Klassen-Objekt ist vom Typ
               <type ’class’>




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                            OOP                    PyDev                            Fazit

Objektsystem



Objektsystem


     Old-Style Objekt-Modell                    New-Style Objekt-Modell

               Auch bekannt als „classic“           Einfacher, regulärer und
               oder „legacy“ Objekt-Modell          mächtiger
               In allen Python 2.x Versionen        Klassen-Objekt ist von einem
               aus Kompatibilitätsgründen als       anderen Typ,
               Default eingestellt                  <type ’type’>
               Klassen-Objekt ist vom Typ           In Zukunft, also ab Python 3.0,
               <type ’class’>                       werden nur noch New-Style
                                                    Klassen erlaubt sein




David Robakowski                                                           Fachhochschule Wedel
Python & PyDev
Python                            OOP                    PyDev                            Fazit

Objektsystem



Objektsystem


     Old-Style Objekt-Modell                    New-Style Objekt-Modell

               Auch bekannt als „classic“           Einfacher, regulärer und
               oder „legacy“ Objekt-Modell          mächtiger
               In allen Python 2.x Versionen        Klassen-Objekt ist von einem
               aus Kompatibilitätsgründen als       anderen Typ,
               Default eingestellt                  <type ’type’>
               Klassen-Objekt ist vom Typ           In Zukunft, also ab Python 3.0,
               <type ’class’>                       werden nur noch New-Style
                                                    Klassen erlaubt sein




David Robakowski                                                           Fachhochschule Wedel
Python & PyDev
Python                                           OOP            PyDev                            Fazit

Objektsystem



Objektsystem


     Old-Style Objekt-Modell                           New-Style Objekt-Modell

               Auch bekannt als „classic“                  Einfacher, regulärer und
               oder „legacy“ Objekt-Modell                 mächtiger
               In allen Python 2.x Versionen               Klassen-Objekt ist von einem
               aus Kompatibilitätsgründen als              anderen Typ,
               Default eingestellt                         <type ’type’>
               Klassen-Objekt ist vom Typ                  In Zukunft, also ab Python 3.0,
               <type ’class’>                              werden nur noch New-Style
                                                           Klassen erlaubt sein
           siehe Beispiel: „ex_object_models.py“ [4]




David Robakowski                                                                  Fachhochschule Wedel
Python & PyDev
Python                         OOP          PyDev                      Fazit

Klassen



Gliederung



          1 Python                   2 OOP
              Geschichte                 Objektsystem
              Eigenschaften              Klassen
              Sprachumfang               Vererbung
              Paradigmen                 Metaklassen
              Einsatzgebiete         3 PyDev
              Vor- und Nachteile         Zu PyDev
                                     4 Fazit
                                         Mein Fazit




David Robakowski                                        Fachhochschule Wedel
Python & PyDev
Python                           OOP                      PyDev                          Fazit

Klassen



Klassen
          Klassen haben in Python unterschiedliche Eigenschaften:
                 Klassen ohne Basis stellen eine „old-style Klasse“ dar




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                           OOP                      PyDev                          Fazit

Klassen



Klassen
          Klassen haben in Python unterschiedliche Eigenschaften:
                 Klassen ohne Basis stellen eine „old-style Klasse“ dar
                 Klassen lassen sich wie Funktionen aufrufen, gehören also zu
                 den callable Typen




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                           OOP                      PyDev                          Fazit

Klassen



Klassen
          Klassen haben in Python unterschiedliche Eigenschaften:
                 Klassen ohne Basis stellen eine „old-style Klasse“ dar
                 Klassen lassen sich wie Funktionen aufrufen, gehören also zu
                 den callable Typen
                 Instanzierung erfolgt durch den Aufruf des Klassennamens




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                           OOP                      PyDev                          Fazit

Klassen



Klassen
          Klassen haben in Python unterschiedliche Eigenschaften:
                 Klassen ohne Basis stellen eine „old-style Klasse“ dar
                 Klassen lassen sich wie Funktionen aufrufen, gehören also zu
                 den callable Typen
                 Instanzierung erfolgt durch den Aufruf des Klassennamens
                 Klassen besitzen Attribute welche „gebunden“ und referenziert
                 werden können




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                           OOP                      PyDev                          Fazit

Klassen



Klassen
          Klassen haben in Python unterschiedliche Eigenschaften:
                 Klassen ohne Basis stellen eine „old-style Klasse“ dar
                 Klassen lassen sich wie Funktionen aufrufen, gehören also zu
                 den callable Typen
                 Instanzierung erfolgt durch den Aufruf des Klassennamens
                 Klassen besitzen Attribute welche „gebunden“ und referenziert
                 werden können
                 Werte von Klassenattribute können einfache Datenobjekte,
                 komplexere wie etwa Deskriptoren oder etwa spezielle Methoden
                 sein




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                           OOP                      PyDev                          Fazit

Klassen



Klassen
          Klassen haben in Python unterschiedliche Eigenschaften:
                 Klassen ohne Basis stellen eine „old-style Klasse“ dar
                 Klassen lassen sich wie Funktionen aufrufen, gehören also zu
                 den callable Typen
                 Instanzierung erfolgt durch den Aufruf des Klassennamens
                 Klassen besitzen Attribute welche „gebunden“ und referenziert
                 werden können
                 Werte von Klassenattribute können einfache Datenobjekte,
                 komplexere wie etwa Deskriptoren oder etwa spezielle Methoden
                 sein
                 Das Verschachteln von Klassen ist möglich




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                           OOP                      PyDev                          Fazit

Klassen



Klassen
          Klassen haben in Python unterschiedliche Eigenschaften:
                 Klassen ohne Basis stellen eine „old-style Klasse“ dar
                 Klassen lassen sich wie Funktionen aufrufen, gehören also zu
                 den callable Typen
                 Instanzierung erfolgt durch den Aufruf des Klassennamens
                 Klassen besitzen Attribute welche „gebunden“ und referenziert
                 werden können
                 Werte von Klassenattribute können einfache Datenobjekte,
                 komplexere wie etwa Deskriptoren oder etwa spezielle Methoden
                 sein
                 Das Verschachteln von Klassen ist möglich
                 Vererbung und Mehrfachvererbung werden unterstützt


David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                           OOP                      PyDev                    Fazit

Klassen



Klassen II
          Klassen haben in Python unterschiedliche Eigenschaften:
                 Zugriff auf Instanzen durch die Punktnotation




David Robakowski                                                    Fachhochschule Wedel
Python & PyDev
Python                           OOP                      PyDev                    Fazit

Klassen



Klassen II
          Klassen haben in Python unterschiedliche Eigenschaften:
                 Zugriff auf Instanzen durch die Punktnotation
                 Es gibt static-, sowie class-Methoden




David Robakowski                                                    Fachhochschule Wedel
Python & PyDev
Python                           OOP                      PyDev                    Fazit

Klassen



Klassen II
          Klassen haben in Python unterschiedliche Eigenschaften:
                 Zugriff auf Instanzen durch die Punktnotation
                 Es gibt static-, sowie class-Methoden
                 gebundene und ungebundene Methoden




David Robakowski                                                    Fachhochschule Wedel
Python & PyDev
Python                           OOP                      PyDev                         Fazit

Klassen



Klassen II
          Klassen haben in Python unterschiedliche Eigenschaften:
                 Zugriff auf Instanzen durch die Punktnotation
                 Es gibt static-, sowie class-Methoden
                 gebundene und ungebundene Methoden
                 Es lässt sich von anderen built-in Typen wie z.B. int oder dict
                 erben




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                           OOP                      PyDev                         Fazit

Klassen



Klassen II
          Klassen haben in Python unterschiedliche Eigenschaften:
                 Zugriff auf Instanzen durch die Punktnotation
                 Es gibt static-, sowie class-Methoden
                 gebundene und ungebundene Methoden
                 Es lässt sich von anderen built-in Typen wie z.B. int oder dict
                 erben
                 Die Subklassenbeziehung ist transitiv




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                           OOP                      PyDev                         Fazit

Klassen



Klassen II
          Klassen haben in Python unterschiedliche Eigenschaften:
                 Zugriff auf Instanzen durch die Punktnotation
                 Es gibt static-, sowie class-Methoden
                 gebundene und ungebundene Methoden
                 Es lässt sich von anderen built-in Typen wie z.B. int oder dict
                 erben
                 Die Subklassenbeziehung ist transitiv
                     if C2(C1) && C3(C2) => issubclass(C3, C1) == True




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                           OOP                      PyDev                         Fazit

Klassen



Klassen II
          Klassen haben in Python unterschiedliche Eigenschaften:
                 Zugriff auf Instanzen durch die Punktnotation
                 Es gibt static-, sowie class-Methoden
                 gebundene und ungebundene Methoden
                 Es lässt sich von anderen built-in Typen wie z.B. int oder dict
                 erben
                 Die Subklassenbeziehung ist transitiv
                     if C2(C1) && C3(C2) => issubclass(C3, C1) == True




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                                             OOP           PyDev                  Fazit

Klassen



Klassen II
          Klassen haben in Python unterschiedliche Eigenschaften:
                 Zugriff auf Instanzen durch die Punktnotation
                 Es gibt static-, sowie class-Methoden
                 gebundene und ungebundene Methoden
                 Es lässt sich von anderen built-in Typen wie z.B. int oder dict
                 erben
                 Die Subklassenbeziehung ist transitiv
                         if C2(C1) && C3(C2) => issubclass(C3, C1) == True
           siehe Beispiel: „ex_inherit_built_in_types_.py“ [4]




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                           OOP                     PyDev                          Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                           OOP                     PyDev                          Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet
                 Methoden werden auch als Attribute gehandhabt




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                           OOP                     PyDev                          Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet
                 Methoden werden auch als Attribute gehandhabt




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                           OOP                     PyDev                          Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet
                 Methoden werden auch als Attribute gehandhabt
                       Bound an eine Instanz gebunden




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                           OOP                     PyDev                          Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet
                 Methoden werden auch als Attribute gehandhabt
                       Bound an eine Instanz gebunden




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                           OOP                     PyDev                          Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet
                 Methoden werden auch als Attribute gehandhabt
                       Bound an eine Instanz gebunden
                     Unbound an eine Klasse gebunden




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                           OOP                     PyDev                          Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet
                 Methoden werden auch als Attribute gehandhabt
                       Bound an eine Instanz gebunden
                     Unbound an eine Klasse gebunden
                 Es lassen sich dynamisch Attribute hinzufügen, sowie löschen




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                           OOP                       PyDev                        Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet
                 Methoden werden auch als Attribute gehandhabt
                       Bound an eine Instanz gebunden
                     Unbound an eine Klasse gebunden
                 Es lassen sich dynamisch Attribute hinzufügen, sowie löschen
                 Es gibt Klassen-/ und Instanz-Attribute




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                            OOP                      PyDev                         Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet
                 Methoden werden auch als Attribute gehandhabt
                       Bound an eine Instanz gebunden
                     Unbound an eine Klasse gebunden
                 Es lassen sich dynamisch Attribute hinzufügen, sowie löschen
                 Es gibt Klassen-/ und Instanz-Attribute
                 Es sind bereits implizit folgende Attribute vorhanden:




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                            OOP                      PyDev                         Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet
                 Methoden werden auch als Attribute gehandhabt
                       Bound an eine Instanz gebunden
                     Unbound an eine Klasse gebunden
                 Es lassen sich dynamisch Attribute hinzufügen, sowie löschen
                 Es gibt Klassen-/ und Instanz-Attribute
                 Es sind bereits implizit folgende Attribute vorhanden:




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                            OOP                      PyDev                         Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet
                 Methoden werden auch als Attribute gehandhabt
                       Bound an eine Instanz gebunden
                     Unbound an eine Klasse gebunden
                 Es lassen sich dynamisch Attribute hinzufügen, sowie löschen
                 Es gibt Klassen-/ und Instanz-Attribute
                 Es sind bereits implizit folgende Attribute vorhanden:
                      __class__ Klassenobjekt zu dem die Instanz gehört




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                            OOP                      PyDev                         Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet
                 Methoden werden auch als Attribute gehandhabt
                       Bound an eine Instanz gebunden
                     Unbound an eine Klasse gebunden
                 Es lassen sich dynamisch Attribute hinzufügen, sowie löschen
                 Es gibt Klassen-/ und Instanz-Attribute
                 Es sind bereits implizit folgende Attribute vorhanden:
                      __class__ Klassenobjekt zu dem die Instanz gehört




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                            OOP                      PyDev                         Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet
                 Methoden werden auch als Attribute gehandhabt
                       Bound an eine Instanz gebunden
                     Unbound an eine Klasse gebunden
                 Es lassen sich dynamisch Attribute hinzufügen, sowie löschen
                 Es gibt Klassen-/ und Instanz-Attribute
                 Es sind bereits implizit folgende Attribute vorhanden:
                      __class__ Klassenobjekt zu dem die Instanz gehört
                       __dict__ Dictionary für die Attribute




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                            OOP                      PyDev                         Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet
                 Methoden werden auch als Attribute gehandhabt
                       Bound an eine Instanz gebunden
                     Unbound an eine Klasse gebunden
                 Es lassen sich dynamisch Attribute hinzufügen, sowie löschen
                 Es gibt Klassen-/ und Instanz-Attribute
                 Es sind bereits implizit folgende Attribute vorhanden:
                      __class__ Klassenobjekt zu dem die Instanz gehört
                       __dict__ Dictionary für die Attribute




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                            OOP                      PyDev                         Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet
                 Methoden werden auch als Attribute gehandhabt
                       Bound an eine Instanz gebunden
                     Unbound an eine Klasse gebunden
                 Es lassen sich dynamisch Attribute hinzufügen, sowie löschen
                 Es gibt Klassen-/ und Instanz-Attribute
                 Es sind bereits implizit folgende Attribute vorhanden:
                     __class__ Klassenobjekt zu dem die Instanz gehört
                       __dict__ Dictionary für die Attribute
                     __name__ Name der Klasse




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                            OOP                      PyDev                         Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet
                 Methoden werden auch als Attribute gehandhabt
                       Bound an eine Instanz gebunden
                     Unbound an eine Klasse gebunden
                 Es lassen sich dynamisch Attribute hinzufügen, sowie löschen
                 Es gibt Klassen-/ und Instanz-Attribute
                 Es sind bereits implizit folgende Attribute vorhanden:
                     __class__ Klassenobjekt zu dem die Instanz gehört
                       __dict__ Dictionary für die Attribute
                     __name__ Name der Klasse




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                             OOP                       PyDev                         Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet
                 Methoden werden auch als Attribute gehandhabt
                       Bound an eine Instanz gebunden
                     Unbound an eine Klasse gebunden
                 Es lassen sich dynamisch Attribute hinzufügen, sowie löschen
                 Es gibt Klassen-/ und Instanz-Attribute
                 Es sind bereits implizit folgende Attribute vorhanden:
                      __class__   Klassenobjekt zu dem die Instanz gehört
                       __dict__   Dictionary für die Attribute
                     __name__     Name der Klasse
                     __bases__    Liste aller Basisklassen




David Robakowski                                                            Fachhochschule Wedel
Python & PyDev
Python                             OOP                       PyDev                         Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet
                 Methoden werden auch als Attribute gehandhabt
                       Bound an eine Instanz gebunden
                     Unbound an eine Klasse gebunden
                 Es lassen sich dynamisch Attribute hinzufügen, sowie löschen
                 Es gibt Klassen-/ und Instanz-Attribute
                 Es sind bereits implizit folgende Attribute vorhanden:
                      __class__   Klassenobjekt zu dem die Instanz gehört
                       __dict__   Dictionary für die Attribute
                     __name__     Name der Klasse
                     __bases__    Liste aller Basisklassen




David Robakowski                                                            Fachhochschule Wedel
Python & PyDev
Python                             OOP                       PyDev                         Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet
                 Methoden werden auch als Attribute gehandhabt
                       Bound an eine Instanz gebunden
                     Unbound an eine Klasse gebunden
                 Es lassen sich dynamisch Attribute hinzufügen, sowie löschen
                 Es gibt Klassen-/ und Instanz-Attribute
                 Es sind bereits implizit folgende Attribute vorhanden:
                      __class__   Klassenobjekt zu dem die Instanz gehört
                       __dict__   Dictionary für die Attribute
                     __name__     Name der Klasse
                     __bases__    Liste aller Basisklassen
                       __doc__    Beinhaltet den „Doc-String“




David Robakowski                                                            Fachhochschule Wedel
Python & PyDev
Python                             OOP                       PyDev                         Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet
                 Methoden werden auch als Attribute gehandhabt
                       Bound an eine Instanz gebunden
                     Unbound an eine Klasse gebunden
                 Es lassen sich dynamisch Attribute hinzufügen, sowie löschen
                 Es gibt Klassen-/ und Instanz-Attribute
                 Es sind bereits implizit folgende Attribute vorhanden:
                      __class__   Klassenobjekt zu dem die Instanz gehört
                       __dict__   Dictionary für die Attribute
                     __name__     Name der Klasse
                     __bases__    Liste aller Basisklassen
                       __doc__    Beinhaltet den „Doc-String“




David Robakowski                                                            Fachhochschule Wedel
Python & PyDev
Python                                               OOP                       PyDev                         Fazit

Klassen



Attribute
                 Alle Attribute werden in einem Dictionary __dict__ verwaltet
                 Methoden werden auch als Attribute gehandhabt
                           Bound an eine Instanz gebunden
                         Unbound an eine Klasse gebunden
                 Es lassen sich dynamisch Attribute hinzufügen, sowie löschen
                 Es gibt Klassen-/ und Instanz-Attribute
                 Es sind bereits implizit folgende Attribute vorhanden:
                          __class__                 Klassenobjekt zu dem die Instanz gehört
                           __dict__                 Dictionary für die Attribute
                         __name__                   Name der Klasse
                         __bases__                  Liste aller Basisklassen
                           __doc__                  Beinhaltet den „Doc-String“
           siehe Beispiel: „ex_attributes.py“ [4]




David Robakowski                                                                              Fachhochschule Wedel
Python & PyDev
Python                           OOP                     PyDev                          Fazit

Klassen



Kapselung von Attributen
                 Python ermöglicht keine „richtige“ Datenkapselung, es handelt
                 sich eher um Konventionen




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                           OOP                     PyDev                          Fazit

Klassen



Kapselung von Attributen
                 Python ermöglicht keine „richtige“ Datenkapselung, es handelt
                 sich eher um Konventionen
                 Folgende Konventionen sollten eingehalten werden:




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                           OOP                     PyDev                          Fazit

Klassen



Kapselung von Attributen
                 Python ermöglicht keine „richtige“ Datenkapselung, es handelt
                 sich eher um Konventionen
                 Folgende Konventionen sollten eingehalten werden:




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                           OOP                          PyDev                     Fazit

Klassen



Kapselung von Attributen
                 Python ermöglicht keine „richtige“ Datenkapselung, es handelt
                 sich eher um Konventionen
                 Folgende Konventionen sollten eingehalten werden:
                              public: Per Default alle Attribute




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                           OOP                          PyDev                     Fazit

Klassen



Kapselung von Attributen
                 Python ermöglicht keine „richtige“ Datenkapselung, es handelt
                 sich eher um Konventionen
                 Folgende Konventionen sollten eingehalten werden:
                              public: Per Default alle Attribute




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                            OOP                        PyDev                            Fazit

Klassen



Kapselung von Attributen
                 Python ermöglicht keine „richtige“ Datenkapselung, es handelt
                 sich eher um Konventionen
                 Folgende Konventionen sollten eingehalten werden:
                                public: Per Default alle Attribute
                     protected / weak: Einfaches „_“ Zeichen leitet protected ein, also
                                        z.B. _name
                                        Werden nicht in den Namensraum eingebunden,
                                        sind jedoch über den Namen erreichbar




David Robakowski                                                               Fachhochschule Wedel
Python & PyDev
Python                            OOP                        PyDev                            Fazit

Klassen



Kapselung von Attributen
                 Python ermöglicht keine „richtige“ Datenkapselung, es handelt
                 sich eher um Konventionen
                 Folgende Konventionen sollten eingehalten werden:
                                public: Per Default alle Attribute
                     protected / weak: Einfaches „_“ Zeichen leitet protected ein, also
                                        z.B. _name
                                        Werden nicht in den Namensraum eingebunden,
                                        sind jedoch über den Namen erreichbar




David Robakowski                                                               Fachhochschule Wedel
Python & PyDev
Python                             OOP                         PyDev                             Fazit

Klassen



Kapselung von Attributen
                 Python ermöglicht keine „richtige“ Datenkapselung, es handelt
                 sich eher um Konventionen
                 Folgende Konventionen sollten eingehalten werden:
                                 public: Per Default alle Attribute
                     protected / weak: Einfaches „_“ Zeichen leitet protected ein, also
                                         z.B. _name
                                         Werden nicht in den Namensraum eingebunden,
                                         sind jedoch über den Namen erreichbar
                       private / strong: Doppelte „_“ Zeichen leiten private ein, also z.B.
                                         __name
                                         Werden vom Interpreter in _ClassName__name
                                         umbenannt




David Robakowski                                                                  Fachhochschule Wedel
Python & PyDev
Python                             OOP                         PyDev                             Fazit

Klassen



Kapselung von Attributen
                 Python ermöglicht keine „richtige“ Datenkapselung, es handelt
                 sich eher um Konventionen
                 Folgende Konventionen sollten eingehalten werden:
                                 public: Per Default alle Attribute
                     protected / weak: Einfaches „_“ Zeichen leitet protected ein, also
                                         z.B. _name
                                         Werden nicht in den Namensraum eingebunden,
                                         sind jedoch über den Namen erreichbar
                       private / strong: Doppelte „_“ Zeichen leiten private ein, also z.B.
                                         __name
                                         Werden vom Interpreter in _ClassName__name
                                         umbenannt




David Robakowski                                                                  Fachhochschule Wedel
Python & PyDev
Python                                            OOP              PyDev                             Fazit

Klassen



Kapselung von Attributen
                 Python ermöglicht keine „richtige“ Datenkapselung, es handelt
                 sich eher um Konventionen
                 Folgende Konventionen sollten eingehalten werden:
                                     public: Per Default alle Attribute
                         protected / weak: Einfaches „_“ Zeichen leitet protected ein, also
                                             z.B. _name
                                             Werden nicht in den Namensraum eingebunden,
                                             sind jedoch über den Namen erreichbar
                           private / strong: Doppelte „_“ Zeichen leiten private ein, also z.B.
                                             __name
                                             Werden vom Interpreter in _ClassName__name
                                             umbenannt
           siehe Beispiel: „ex_encapsulation.py“ [4]




David Robakowski                                                                      Fachhochschule Wedel
Python & PyDev
Python                          OOP                     PyDev                         Fazit

Klassen



Deskriptoren
                 Spezielle new-style Objekte, dessen Klasse eine Methode
                 __get__ implementiert




David Robakowski                                                       Fachhochschule Wedel
Python & PyDev
Python                           OOP                     PyDev                          Fazit

Klassen



Deskriptoren
                 Spezielle new-style Objekte, dessen Klasse eine Methode
                 __get__ implementiert
                 Übernehmen als Klassenattribut die Zugriffsteuerung auf diese
                 Instanz




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                           OOP                     PyDev                          Fazit

Klassen



Deskriptoren
                 Spezielle new-style Objekte, dessen Klasse eine Methode
                 __get__ implementiert
                 Übernehmen als Klassenattribut die Zugriffsteuerung auf diese
                 Instanz
                 Unterteilt in:




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                           OOP                     PyDev                          Fazit

Klassen



Deskriptoren
                 Spezielle new-style Objekte, dessen Klasse eine Methode
                 __get__ implementiert
                 Übernehmen als Klassenattribut die Zugriffsteuerung auf diese
                 Instanz
                 Unterteilt in:




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                           OOP                        PyDev                            Fazit

Klassen



Deskriptoren
                 Spezielle new-style Objekte, dessen Klasse eine Methode
                 __get__ implementiert
                 Übernehmen als Klassenattribut die Zugriffsteuerung auf diese
                 Instanz
                 Unterteilt in:
                         overriding descriptor implementieren zusätzlich die __set__
                                               Methode
                                               Auch Daten-Deskriptor genannt




David Robakowski                                                              Fachhochschule Wedel
Python & PyDev
Python                           OOP                        PyDev                            Fazit

Klassen



Deskriptoren
                 Spezielle new-style Objekte, dessen Klasse eine Methode
                 __get__ implementiert
                 Übernehmen als Klassenattribut die Zugriffsteuerung auf diese
                 Instanz
                 Unterteilt in:
                         overriding descriptor implementieren zusätzlich die __set__
                                               Methode
                                               Auch Daten-Deskriptor genannt




David Robakowski                                                              Fachhochschule Wedel
Python & PyDev
Python                            OOP                        PyDev                           Fazit

Klassen



Deskriptoren
                 Spezielle new-style Objekte, dessen Klasse eine Methode
                 __get__ implementiert
                 Übernehmen als Klassenattribut die Zugriffsteuerung auf diese
                 Instanz
                 Unterteilt in:
                         overriding descriptor implementieren zusätzlich die __set__
                                               Methode
                                               Auch Daten-Deskriptor genannt
                     non-overriding descriptor z.B. Funktionsobjekte




David Robakowski                                                              Fachhochschule Wedel
Python & PyDev
Python                            OOP                        PyDev                           Fazit

Klassen



Deskriptoren
                 Spezielle new-style Objekte, dessen Klasse eine Methode
                 __get__ implementiert
                 Übernehmen als Klassenattribut die Zugriffsteuerung auf diese
                 Instanz
                 Unterteilt in:
                         overriding descriptor implementieren zusätzlich die __set__
                                               Methode
                                               Auch Daten-Deskriptor genannt
                     non-overriding descriptor z.B. Funktionsobjekte
                 Finden Anwendung bei Funktionen, Eigenschaften, super(),
                 Statische-, Klassenmethoden und sogar bei Klassen




David Robakowski                                                              Fachhochschule Wedel
Python & PyDev
Python                            OOP                        PyDev                           Fazit

Klassen



Deskriptoren
                 Spezielle new-style Objekte, dessen Klasse eine Methode
                 __get__ implementiert
                 Übernehmen als Klassenattribut die Zugriffsteuerung auf diese
                 Instanz
                 Unterteilt in:
                         overriding descriptor implementieren zusätzlich die __set__
                                               Methode
                                               Auch Daten-Deskriptor genannt
                     non-overriding descriptor z.B. Funktionsobjekte
                 Finden Anwendung bei Funktionen, Eigenschaften, super(),
                 Statische-, Klassenmethoden und sogar bei Klassen




David Robakowski                                                              Fachhochschule Wedel
Python & PyDev
Python                                               OOP         PyDev                           Fazit

Klassen



Deskriptoren
                 Spezielle new-style Objekte, dessen Klasse eine Methode
                 __get__ implementiert
                 Übernehmen als Klassenattribut die Zugriffsteuerung auf diese
                 Instanz
                 Unterteilt in:
                             overriding descriptor implementieren zusätzlich die __set__
                                                   Methode
                                                   Auch Daten-Deskriptor genannt
                         non-overriding descriptor z.B. Funktionsobjekte
                 Finden Anwendung bei Funktionen, Eigenschaften, super(),
                 Statische-, Klassenmethoden und sogar bei Klassen
           siehe Beispiel: „ex_descriptors.py“ [4]




David Robakowski                                                                  Fachhochschule Wedel
Python & PyDev
Python                           OOP                     PyDev                  Fazit

Klassen



Funktionen und Methoden
                 Das erste Argument enthält die Objektinstanz




David Robakowski                                                 Fachhochschule Wedel
Python & PyDev
Python                           OOP                     PyDev                  Fazit

Klassen



Funktionen und Methoden
                 Das erste Argument enthält die Objektinstanz
                 Per Konvention self genannt




David Robakowski                                                 Fachhochschule Wedel
Python & PyDev
Python                           OOP                     PyDev                         Fazit

Klassen



Funktionen und Methoden
                 Das erste Argument enthält die Objektinstanz
                 Per Konvention self genannt
                 Eine Klasse kann spezielle Methoden enthalten, welche die
                 Form __xxx__ haben




David Robakowski                                                        Fachhochschule Wedel
Python & PyDev
Python                           OOP                     PyDev                         Fazit

Klassen



Funktionen und Methoden
                 Das erste Argument enthält die Objektinstanz
                 Per Konvention self genannt
                 Eine Klasse kann spezielle Methoden enthalten, welche die
                 Form __xxx__ haben
                 Um den Aufruf als Methode zu unterstützen, enthalten
                 Funktionen die __get__ Methode




David Robakowski                                                        Fachhochschule Wedel
Python & PyDev
Python                           OOP                       PyDev                          Fazit

Klassen



Funktionen und Methoden
                 Das erste Argument enthält die Objektinstanz
                 Per Konvention self genannt
                 Eine Klasse kann spezielle Methoden enthalten, welche die
                 Form __xxx__ haben
                 Um den Aufruf als Methode zu unterstützen, enthalten
                 Funktionen die __get__ Methode
                 Alle Funktionen stellen non-overriding Deskriptoren dar, die
                 gebundene oder ungebundene Methoden zurückgeben




David Robakowski                                                           Fachhochschule Wedel
Python & PyDev
Python                           OOP                       PyDev                          Fazit

Klassen



Funktionen und Methoden
                 Das erste Argument enthält die Objektinstanz
                 Per Konvention self genannt
                 Eine Klasse kann spezielle Methoden enthalten, welche die
                 Form __xxx__ haben
                 Um den Aufruf als Methode zu unterstützen, enthalten
                 Funktionen die __get__ Methode
                 Alle Funktionen stellen non-overriding Deskriptoren dar, die
                 gebundene oder ungebundene Methoden zurückgeben




David Robakowski                                                           Fachhochschule Wedel
Python & PyDev
Python                                               OOP   PyDev                          Fazit

Klassen



Funktionen und Methoden
                 Das erste Argument enthält die Objektinstanz
                 Per Konvention self genannt
                 Eine Klasse kann spezielle Methoden enthalten, welche die
                 Form __xxx__ haben
                 Um den Aufruf als Methode zu unterstützen, enthalten
                 Funktionen die __get__ Methode
                 Alle Funktionen stellen non-overriding Deskriptoren dar, die
                 gebundene oder ungebundene Methoden zurückgeben
           siehe Beispiel: „ex_descriptors.py“ [4]




David Robakowski                                                           Fachhochschule Wedel
Python & PyDev
Python                           OOP                   PyDev                  Fazit

Klassen



Properties, Statische und Klassenmethoden
                 Werden über Deskriptoren realisiert




David Robakowski                                               Fachhochschule Wedel
Python & PyDev
Python                           OOP                   PyDev                  Fazit

Klassen



Properties, Statische und Klassenmethoden
                 Werden über Deskriptoren realisiert
                 Werden an Klassenattribute gebunden




David Robakowski                                               Fachhochschule Wedel
Python & PyDev
Python                           OOP                   PyDev                  Fazit

Klassen



Properties, Statische und Klassenmethoden
                 Werden über Deskriptoren realisiert
                 Werden an Klassenattribute gebunden




David Robakowski                                               Fachhochschule Wedel
Python & PyDev
Python                           OOP                           PyDev                  Fazit

Klassen



Properties, Statische und Klassenmethoden
                 Werden über Deskriptoren realisiert
                 Werden an Klassenattribute gebunden
                     property Data-Deskriptor
                              property(fget=None, fset=None, fdel=None, doc=None)
                              Read-only einfach möglich durch Nichtsetzen von
                              fset
                              Vorteile, keine Statements wie
                              c.setCnt(c.getCnt( ) + 1)




David Robakowski                                                       Fachhochschule Wedel
Python & PyDev
Python                           OOP                           PyDev                  Fazit

Klassen



Properties, Statische und Klassenmethoden
                 Werden über Deskriptoren realisiert
                 Werden an Klassenattribute gebunden
                     property Data-Deskriptor
                              property(fget=None, fset=None, fdel=None, doc=None)
                              Read-only einfach möglich durch Nichtsetzen von
                              fset
                              Vorteile, keine Statements wie
                              c.setCnt(c.getCnt( ) + 1)




David Robakowski                                                       Fachhochschule Wedel
Python & PyDev
Python                           OOP                           PyDev                  Fazit

Klassen



Properties, Statische und Klassenmethoden
                 Werden über Deskriptoren realisiert
                 Werden an Klassenattribute gebunden
                     property Data-Deskriptor
                              property(fget=None, fset=None, fdel=None, doc=None)
                              Read-only einfach möglich durch Nichtsetzen von
                              fset
                              Vorteile, keine Statements wie
                              c.setCnt(c.getCnt( ) + 1)
                 staticmethod non-overriding Deskriptor
                              In Java vergleichbar mit static
                              Gibt zu Grunde liegende Funktion ohne Änderung
                              zurück
                              staticmethod(f)



David Robakowski                                                       Fachhochschule Wedel
Python & PyDev
Python             OOP           PyDev                        Fazit

Klassen



Properties, Statische und Klassenmethoden II




David Robakowski                               Fachhochschule Wedel
Python & PyDev
Python                          OOP                    PyDev                            Fazit

Klassen



Properties, Statische und Klassenmethoden II
                 classmethod non-overriding Deskriptor
                             Erstes Argument wird an das Klassenobjekt
                             gebunden
                             Per Konvention cls genannt
                             Kann durch Instanz- oder Klassenobjekt
                             aufgerufen werden
                             classmethod(f)




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                          OOP                    PyDev                            Fazit

Klassen



Properties, Statische und Klassenmethoden II
                 classmethod non-overriding Deskriptor
                             Erstes Argument wird an das Klassenobjekt
                             gebunden
                             Per Konvention cls genannt
                             Kann durch Instanz- oder Klassenobjekt
                             aufgerufen werden
                             classmethod(f)




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                                            OOP           PyDev                   Fazit

Klassen



Properties, Statische und Klassenmethoden II
                 classmethod non-overriding Deskriptor
                             Erstes Argument wird an das Klassenobjekt
                             gebunden
                             Per Konvention cls genannt
                             Kann durch Instanz- oder Klassenobjekt
                             aufgerufen werden
                                             classmethod(f)
           siehe Beispiel: „ex_properties_class-level.py“ [4]




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                        OOP          PyDev                      Fazit

Vererbung



Gliederung



         1 Python                   2 OOP
             Geschichte                 Objektsystem
             Eigenschaften              Klassen
             Sprachumfang               Vererbung
             Paradigmen                 Metaklassen
             Einsatzgebiete         3 PyDev
             Vor- und Nachteile         Zu PyDev
                                    4 Fazit
                                        Mein Fazit




David Robakowski                                       Fachhochschule Wedel
Python & PyDev
Python                          OOP                    PyDev                            Fazit

Vererbung



Method Resolution Order
                 Vererbung, sowie Mehrfachvererbung werden unterstützt




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                          OOP                    PyDev                            Fazit

Vererbung



Method Resolution Order
                 Vererbung, sowie Mehrfachvererbung werden unterstützt
                 class Name(bases, ...)




David Robakowski                                                         Fachhochschule Wedel
Python & PyDev
Python                           OOP                    PyDev                            Fazit

Vererbung



Method Resolution Order
                 Vererbung, sowie Mehrfachvererbung werden unterstützt
                 class Name(bases, ...)
                 Es lassen sich Methoden, sowie Attribute überschreiben




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                           OOP                    PyDev                            Fazit

Vererbung



Method Resolution Order
                 Vererbung, sowie Mehrfachvererbung werden unterstützt
                 class Name(bases, ...)
                 Es lassen sich Methoden, sowie Attribute überschreiben
                 Durch die Mehrfachvererbung entsteht die Frage nach MRO




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                           OOP                    PyDev                            Fazit

Vererbung



Method Resolution Order
                 Vererbung, sowie Mehrfachvererbung werden unterstützt
                 class Name(bases, ...)
                 Es lassen sich Methoden, sowie Attribute überschreiben
                 Durch die Mehrfachvererbung entsteht die Frage nach MRO
                 Standardmäßig werden Attribute, Methoden in __dict__ von links
                 nach rechts gesucht




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                           OOP                    PyDev                            Fazit

Vererbung



Method Resolution Order
                 Vererbung, sowie Mehrfachvererbung werden unterstützt
                 class Name(bases, ...)
                 Es lassen sich Methoden, sowie Attribute überschreiben
                 Durch die Mehrfachvererbung entsteht die Frage nach MRO
                 Standardmäßig werden Attribute, Methoden in __dict__ von links
                 nach rechts gesucht
                 Wenn Schlüssel nicht gefunden wird, wird die Suche auf
                 __bases__ fortgeführt




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python                           OOP                    PyDev                            Fazit

Vererbung



Method Resolution Order
                 Vererbung, sowie Mehrfachvererbung werden unterstützt
                 class Name(bases, ...)
                 Es lassen sich Methoden, sowie Attribute überschreiben
                 Durch die Mehrfachvererbung entsteht die Frage nach MRO
                 Standardmäßig werden Attribute, Methoden in __dict__ von links
                 nach rechts gesucht
                 Wenn Schlüssel nicht gefunden wird, wird die Suche auf
                 __bases__ fortgeführt
                 Unterschiedlich in old-style und new-style




David Robakowski                                                          Fachhochschule Wedel
Python & PyDev
Python              OOP                        PyDev                             Fazit

Vererbung



Method Resolution Order - classic
   Figure 5-1 [1]

                          Links nach rechts, tiefenorientiertes
                          Suchverfahren




David Robakowski                                                  Fachhochschule Wedel
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev
Python & PyDev

Weitere ähnliche Inhalte

Andere mochten auch

Shooting schedule
Shooting scheduleShooting schedule
Shooting schedulethaliajade
 
2016 общая химия гокжаев-белова-герман-афанасьев 2016
2016 общая химия гокжаев-белова-герман-афанасьев 20162016 общая химия гокжаев-белова-герман-афанасьев 2016
2016 общая химия гокжаев-белова-герман-афанасьев 2016Konstantin German
 
1. taldea
1. taldea1. taldea
1. taldeaelelatu
 
Reactivos de respuesta breve
Reactivos de respuesta breveReactivos de respuesta breve
Reactivos de respuesta breveKaterin Colcha
 
1Q10 Results Presentation
1Q10 Results Presentation1Q10 Results Presentation
1Q10 Results PresentationTegmaRI
 
Word 2007 sorulari 1
Word 2007 sorulari 1Word 2007 sorulari 1
Word 2007 sorulari 1tncy_2023
 
Reproducible Science with Python
Reproducible Science with PythonReproducible Science with Python
Reproducible Science with PythonAndreas Schreiber
 
Agencia de viajes
Agencia de viajesAgencia de viajes
Agencia de viajeselelatu
 
OpenStreetMap in 3D using Python
OpenStreetMap in 3D using PythonOpenStreetMap in 3D using Python
OpenStreetMap in 3D using PythonMartin Christen
 
Презентация How to Learn English
Презентация How to Learn EnglishПрезентация How to Learn English
Презентация How to Learn EnglishCENTROCAPITAL Inc
 
Presentation assistance téléactivité
Presentation   assistance téléactivitéPresentation   assistance téléactivité
Presentation assistance téléactivitéHoward SEEDOO
 

Andere mochten auch (18)

Landsat Benefit Analysis
Landsat Benefit AnalysisLandsat Benefit Analysis
Landsat Benefit Analysis
 
Storyboard
StoryboardStoryboard
Storyboard
 
Shooting schedule
Shooting scheduleShooting schedule
Shooting schedule
 
2016 общая химия гокжаев-белова-герман-афанасьев 2016
2016 общая химия гокжаев-белова-герман-афанасьев 20162016 общая химия гокжаев-белова-герман-афанасьев 2016
2016 общая химия гокжаев-белова-герман-афанасьев 2016
 
1987 na tco4-4h2o
1987 na tco4-4h2o1987 na tco4-4h2o
1987 na tco4-4h2o
 
1. taldea
1. taldea1. taldea
1. taldea
 
Rubrica de evaluación
Rubrica de evaluaciónRubrica de evaluación
Rubrica de evaluación
 
Carton thierry 10
Carton thierry 10Carton thierry 10
Carton thierry 10
 
Organization
OrganizationOrganization
Organization
 
Reactivos de respuesta breve
Reactivos de respuesta breveReactivos de respuesta breve
Reactivos de respuesta breve
 
1Q10 Results Presentation
1Q10 Results Presentation1Q10 Results Presentation
1Q10 Results Presentation
 
Word 2007 sorulari 1
Word 2007 sorulari 1Word 2007 sorulari 1
Word 2007 sorulari 1
 
Reproducible Science with Python
Reproducible Science with PythonReproducible Science with Python
Reproducible Science with Python
 
Agencia de viajes
Agencia de viajesAgencia de viajes
Agencia de viajes
 
OpenStreetMap in 3D using Python
OpenStreetMap in 3D using PythonOpenStreetMap in 3D using Python
OpenStreetMap in 3D using Python
 
народні ігри
народні ігринародні ігри
народні ігри
 
Презентация How to Learn English
Презентация How to Learn EnglishПрезентация How to Learn English
Презентация How to Learn English
 
Presentation assistance téléactivité
Presentation   assistance téléactivitéPresentation   assistance téléactivité
Presentation assistance téléactivité
 

Ähnlich wie Python & PyDev

OpenRheinRuhr 2017 - Testgetriebene Entwicklung multimodaler Applikationen
OpenRheinRuhr 2017 - Testgetriebene Entwicklung multimodaler ApplikationenOpenRheinRuhr 2017 - Testgetriebene Entwicklung multimodaler Applikationen
OpenRheinRuhr 2017 - Testgetriebene Entwicklung multimodaler ApplikationenRaphael Groner
 
Java und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzenJava und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzenAndreas Schreiber
 
20160229_ModernApplicationDevelopment_Python_KPatenge
20160229_ModernApplicationDevelopment_Python_KPatenge20160229_ModernApplicationDevelopment_Python_KPatenge
20160229_ModernApplicationDevelopment_Python_KPatengeKarin Patenge
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETGFU Cyrus AG
 
Programmieren lernen Grundkurs - Tag1: 2. Theoretischer Einstieg
Programmieren lernen Grundkurs - Tag1: 2. Theoretischer EinstiegProgrammieren lernen Grundkurs - Tag1: 2. Theoretischer Einstieg
Programmieren lernen Grundkurs - Tag1: 2. Theoretischer EinstiegJan Brinkmann
 
Opsd Endpraesentation
Opsd EndpraesentationOpsd Endpraesentation
Opsd Endpraesentationfiebigc
 
Semantische Annotationen mit Plone
Semantische Annotationen mit PloneSemantische Annotationen mit Plone
Semantische Annotationen mit PloneHendrik Bunke
 
Statische Analyse von PHP Projekten
Statische Analyse von PHP ProjektenStatische Analyse von PHP Projekten
Statische Analyse von PHP ProjektenGjero Krsteski
 
PyLucene@PyCon DE 2011
PyLucene@PyCon DE 2011PyLucene@PyCon DE 2011
PyLucene@PyCon DE 2011Thomas Koch
 
Legacy php - Sanieren oder Ablösen?
Legacy php  - Sanieren oder Ablösen?Legacy php  - Sanieren oder Ablösen?
Legacy php - Sanieren oder Ablösen?Johann-Peter Hartmann
 
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...Robin Sedlaczek
 
Übersicht Glm Workshop 2009
Übersicht Glm Workshop 2009Übersicht Glm Workshop 2009
Übersicht Glm Workshop 2009Mark Heckmann
 
Insidrrr Day 1: Michael Schlösser - Haxe in 15 Minuten
Insidrrr Day 1: Michael Schlösser - Haxe in 15 MinutenInsidrrr Day 1: Michael Schlösser - Haxe in 15 Minuten
Insidrrr Day 1: Michael Schlösser - Haxe in 15 Minuteninsidrrr
 
SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)
SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)
SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)triagens
 
Schraege Roboter - Kickoff Workshop mit Lehrern_innen
Schraege Roboter - Kickoff Workshop mit Lehrern_innenSchraege Roboter - Kickoff Workshop mit Lehrern_innen
Schraege Roboter - Kickoff Workshop mit Lehrern_innenLara Lammer
 
Einführung in .NET mit C#
Einführung in .NET mit C#Einführung in .NET mit C#
Einführung in .NET mit C#mspgermany
 

Ähnlich wie Python & PyDev (20)

OpenRheinRuhr 2017 - Testgetriebene Entwicklung multimodaler Applikationen
OpenRheinRuhr 2017 - Testgetriebene Entwicklung multimodaler ApplikationenOpenRheinRuhr 2017 - Testgetriebene Entwicklung multimodaler Applikationen
OpenRheinRuhr 2017 - Testgetriebene Entwicklung multimodaler Applikationen
 
Informatik Curriculum NEU
Informatik Curriculum NEUInformatik Curriculum NEU
Informatik Curriculum NEU
 
Java und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzenJava und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzen
 
20160229_ModernApplicationDevelopment_Python_KPatenge
20160229_ModernApplicationDevelopment_Python_KPatenge20160229_ModernApplicationDevelopment_Python_KPatenge
20160229_ModernApplicationDevelopment_Python_KPatenge
 
LINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NETLINQ - Einheitlicher Datenzugriff in .NET
LINQ - Einheitlicher Datenzugriff in .NET
 
Programmieren lernen Grundkurs - Tag1: 2. Theoretischer Einstieg
Programmieren lernen Grundkurs - Tag1: 2. Theoretischer EinstiegProgrammieren lernen Grundkurs - Tag1: 2. Theoretischer Einstieg
Programmieren lernen Grundkurs - Tag1: 2. Theoretischer Einstieg
 
Froscamp2010_padre
Froscamp2010_padreFroscamp2010_padre
Froscamp2010_padre
 
PHPblue LOS!NRW
PHPblue LOS!NRWPHPblue LOS!NRW
PHPblue LOS!NRW
 
PHP auf IBM Plattformen
PHP auf IBM PlattformenPHP auf IBM Plattformen
PHP auf IBM Plattformen
 
Opsd Endpraesentation
Opsd EndpraesentationOpsd Endpraesentation
Opsd Endpraesentation
 
Semantische Annotationen mit Plone
Semantische Annotationen mit PloneSemantische Annotationen mit Plone
Semantische Annotationen mit Plone
 
Statische Analyse von PHP Projekten
Statische Analyse von PHP ProjektenStatische Analyse von PHP Projekten
Statische Analyse von PHP Projekten
 
PyLucene@PyCon DE 2011
PyLucene@PyCon DE 2011PyLucene@PyCon DE 2011
PyLucene@PyCon DE 2011
 
Legacy php - Sanieren oder Ablösen?
Legacy php  - Sanieren oder Ablösen?Legacy php  - Sanieren oder Ablösen?
Legacy php - Sanieren oder Ablösen?
 
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
DevOpenSpace 2017 - .NET, .NET Core & .NET Standard - Und ich mal wieder mitt...
 
Übersicht Glm Workshop 2009
Übersicht Glm Workshop 2009Übersicht Glm Workshop 2009
Übersicht Glm Workshop 2009
 
Insidrrr Day 1: Michael Schlösser - Haxe in 15 Minuten
Insidrrr Day 1: Michael Schlösser - Haxe in 15 MinutenInsidrrr Day 1: Michael Schlösser - Haxe in 15 Minuten
Insidrrr Day 1: Michael Schlösser - Haxe in 15 Minuten
 
SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)
SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)
SimpleVOC OPEN – Yet another Memcached? (Froscon 2010 talk, german)
 
Schraege Roboter - Kickoff Workshop mit Lehrern_innen
Schraege Roboter - Kickoff Workshop mit Lehrern_innenSchraege Roboter - Kickoff Workshop mit Lehrern_innen
Schraege Roboter - Kickoff Workshop mit Lehrern_innen
 
Einführung in .NET mit C#
Einführung in .NET mit C#Einführung in .NET mit C#
Einführung in .NET mit C#
 

Python & PyDev

  • 1. Python OOP PyDev Fazit Alternative objektorientiere Programmiersprachen Python & PyDev David Robakowski Fachhochschule Wedel Juli 11, 2009 David Robakowski Fachhochschule Wedel Python & PyDev
  • 2. Python OOP PyDev Fazit Gliederung 1 Python 2 OOP Geschichte Objektsystem Eigenschaften Klassen Sprachumfang Vererbung Paradigmen Metaklassen Einsatzgebiete 3 PyDev Vor- und Nachteile Zu PyDev 4 Fazit Mein Fazit David Robakowski Fachhochschule Wedel Python & PyDev
  • 3. Python OOP PyDev Fazit Geschichte Gliederung 1 Python 2 OOP Geschichte Objektsystem Eigenschaften Klassen Sprachumfang Vererbung Paradigmen Metaklassen Einsatzgebiete 3 PyDev Vor- und Nachteile Zu PyDev 4 Fazit Mein Fazit David Robakowski Fachhochschule Wedel Python & PyDev
  • 4. Python OOP PyDev Fazit Geschichte Zur Geschichte von Python Entwickelt Anfang der 90er Jahre von Guido van Rossum am Zentrum für Mathematik und Informatik in Amsterdam David Robakowski Fachhochschule Wedel Python & PyDev
  • 5. Python OOP PyDev Fazit Geschichte Zur Geschichte von Python Entwickelt Anfang der 90er Jahre von Guido van Rossum am Zentrum für Mathematik und Informatik in Amsterdam Wurde ursprünglich für das verteilte Betriebssystem Amoeba entwickelt, als Nachfolger für die Lehrsprache ABC David Robakowski Fachhochschule Wedel Python & PyDev
  • 6. Python OOP PyDev Fazit Geschichte Zur Geschichte von Python Entwickelt Anfang der 90er Jahre von Guido van Rossum am Zentrum für Mathematik und Informatik in Amsterdam Wurde ursprünglich für das verteilte Betriebssystem Amoeba entwickelt, als Nachfolger für die Lehrsprache ABC Namensherkunft: Britische Komikergruppe „Monty Python“ David Robakowski Fachhochschule Wedel Python & PyDev
  • 7. Python OOP PyDev Fazit Eigenschaften Gliederung 1 Python 2 OOP Geschichte Objektsystem Eigenschaften Klassen Sprachumfang Vererbung Paradigmen Metaklassen Einsatzgebiete 3 PyDev Vor- und Nachteile Zu PyDev 4 Fazit Mein Fazit David Robakowski Fachhochschule Wedel Python & PyDev
  • 8. Python OOP PyDev Fazit Eigenschaften Eigenschaften von Python Simpel Schnell, einfach und übersichtlich(Einrückung) programmieren David Robakowski Fachhochschule Wedel Python & PyDev
  • 9. Python OOP PyDev Fazit Eigenschaften Eigenschaften von Python Simpel Schnell, einfach und übersichtlich(Einrückung) programmieren Höhere Programmiersprache Garbage-Collector David Robakowski Fachhochschule Wedel Python & PyDev
  • 10. Python OOP PyDev Fazit Eigenschaften Eigenschaften von Python Simpel Schnell, einfach und übersichtlich(Einrückung) programmieren Höhere Programmiersprache Garbage-Collector Bibliotheken Umfangreiche Bibliotheken aus den unterschiedlichsten Bereichen: z.B. Datenbanken, Audio/Video, GUI, Web, ... David Robakowski Fachhochschule Wedel Python & PyDev
  • 11. Python OOP PyDev Fazit Eigenschaften Eigenschaften von Python Simpel Schnell, einfach und übersichtlich(Einrückung) programmieren Höhere Programmiersprache Garbage-Collector Bibliotheken Umfangreiche Bibliotheken aus den unterschiedlichsten Bereichen: z.B. Datenbanken, Audio/Video, GUI, Web, ... Portabel Linux/Unix, Windows, Mac, OS 2, ... David Robakowski Fachhochschule Wedel Python & PyDev
  • 12. Python OOP PyDev Fazit Eigenschaften Eigenschaften von Python Simpel Schnell, einfach und übersichtlich(Einrückung) programmieren Höhere Programmiersprache Garbage-Collector Bibliotheken Umfangreiche Bibliotheken aus den unterschiedlichsten Bereichen: z.B. Datenbanken, Audio/Video, GUI, Web, ... Portabel Linux/Unix, Windows, Mac, OS 2, ... Interpretiert Zwischencode wird von Interpreter ausgeführt David Robakowski Fachhochschule Wedel Python & PyDev
  • 13. Python OOP PyDev Fazit Eigenschaften Eigenschaften von Python II Objektorientiert Sehr flexibel und mächtig David Robakowski Fachhochschule Wedel Python & PyDev
  • 14. Python OOP PyDev Fazit Eigenschaften Eigenschaften von Python II Objektorientiert Sehr flexibel und mächtig Erweiterbar z.B. durch C/C++ Bibliotheken, falls mehr Performance benötigt wird David Robakowski Fachhochschule Wedel Python & PyDev
  • 15. Python OOP PyDev Fazit Eigenschaften Eigenschaften von Python II Objektorientiert Sehr flexibel und mächtig Erweiterbar z.B. durch C/C++ Bibliotheken, falls mehr Performance benötigt wird Integrierbar Integration in andere Programmierumgebungen wie z.B. .Net, Java, COM, CORBA, C und C++ David Robakowski Fachhochschule Wedel Python & PyDev
  • 16. Python OOP PyDev Fazit Eigenschaften Eigenschaften von Python II Objektorientiert Sehr flexibel und mächtig Erweiterbar z.B. durch C/C++ Bibliotheken, falls mehr Performance benötigt wird Integrierbar Integration in andere Programmierumgebungen wie z.B. .Net, Java, COM, CORBA, C und C++ Dynamik Dynamik durch Möglichkeit des Mischens unterschiedlicher Programmierparadigmen David Robakowski Fachhochschule Wedel Python & PyDev
  • 17. Python OOP PyDev Fazit Eigenschaften Eigenschaften von Python II Objektorientiert Sehr flexibel und mächtig Erweiterbar z.B. durch C/C++ Bibliotheken, falls mehr Performance benötigt wird Integrierbar Integration in andere Programmierumgebungen wie z.B. .Net, Java, COM, CORBA, C und C++ Dynamik Dynamik durch Möglichkeit des Mischens unterschiedlicher Programmierparadigmen Open Source Große Community David Robakowski Fachhochschule Wedel Python & PyDev
  • 18. Python OOP PyDev Fazit Sprachumfang Gliederung 1 Python 2 OOP Geschichte Objektsystem Eigenschaften Klassen Sprachumfang Vererbung Paradigmen Metaklassen Einsatzgebiete 3 PyDev Vor- und Nachteile Zu PyDev 4 Fazit Mein Fazit David Robakowski Fachhochschule Wedel Python & PyDev
  • 19. Python OOP PyDev Fazit Sprachumfang Sprachumfang Sprachelemente False else lambda None except nonlocal True exec not and finally or assert for pass break from raise class global return continue if try def import while del in with elif is yield David Robakowski Fachhochschule Wedel Python & PyDev
  • 20. Python OOP PyDev Fazit Sprachumfang Datentypen Python ist dynamisch getypt, es gibt also keine explizite Datentypdeklaration David Robakowski Fachhochschule Wedel Python & PyDev
  • 21. Python OOP PyDev Fazit Sprachumfang Datentypen Python ist dynamisch getypt, es gibt also keine explizite Datentypdeklaration ...jedoch streng getypt David Robakowski Fachhochschule Wedel Python & PyDev
  • 22. Python OOP PyDev Fazit Sprachumfang Datentypen Python ist dynamisch getypt, es gibt also keine explizite Datentypdeklaration ...jedoch streng getypt Alle Datentypen sind Objekte David Robakowski Fachhochschule Wedel Python & PyDev
  • 23. Python OOP PyDev Fazit Sprachumfang Datentypen Python ist dynamisch getypt, es gibt also keine explizite Datentypdeklaration ...jedoch streng getypt Alle Datentypen sind Objekte Werden auch built-in types bezeichnet David Robakowski Fachhochschule Wedel Python & PyDev
  • 24. Python OOP PyDev Fazit Sprachumfang Datentypen Python ist dynamisch getypt, es gibt also keine explizite Datentypdeklaration ...jedoch streng getypt Alle Datentypen sind Objekte Werden auch built-in types bezeichnet Die Klasse object bildet dabei die Oberklasse von allen Typen und new-style Klassen David Robakowski Fachhochschule Wedel Python & PyDev
  • 25. Python OOP PyDev Fazit Sprachumfang Datentypen II Python besitzt für die unterschiedlichsten Gebiete „built-in types“: David Robakowski Fachhochschule Wedel Python & PyDev
  • 26. Python OOP PyDev Fazit Sprachumfang Datentypen II Python besitzt für die unterschiedlichsten Gebiete „built-in types“: Numerische: int, float, komplexe Zahlen David Robakowski Fachhochschule Wedel Python & PyDev
  • 27. Python OOP PyDev Fazit Sprachumfang Datentypen II Python besitzt für die unterschiedlichsten Gebiete „built-in types“: Numerische: int, float, komplexe Zahlen Sequenzen: string, tupel, list David Robakowski Fachhochschule Wedel Python & PyDev
  • 28. Python OOP PyDev Fazit Sprachumfang Datentypen II Python besitzt für die unterschiedlichsten Gebiete „built-in types“: Numerische: int, float, komplexe Zahlen Sequenzen: string, tupel, list Mengen: set, frozenset David Robakowski Fachhochschule Wedel Python & PyDev
  • 29. Python OOP PyDev Fazit Sprachumfang Datentypen II Python besitzt für die unterschiedlichsten Gebiete „built-in types“: Numerische: int, float, komplexe Zahlen Sequenzen: string, tupel, list Mengen: set, frozenset Dictionaries: {key: value,...} David Robakowski Fachhochschule Wedel Python & PyDev
  • 30. Python OOP PyDev Fazit Sprachumfang Datentypen II Python besitzt für die unterschiedlichsten Gebiete „built-in types“: Numerische: int, float, komplexe Zahlen Sequenzen: string, tupel, list Mengen: set, frozenset Dictionaries: {key: value,...} Verschiedenes: None, Callable, Boolean David Robakowski Fachhochschule Wedel Python & PyDev
  • 31. Python OOP PyDev Fazit Sprachumfang Code Beispiel Connection String Builder [2] def buildConnectionString(params): """Build a connection string from a dictionary of parameters. Returns string.""" return ";".join(["%s=%s" % (k, v) for k, v in params.items()]) if __name__ == "__main__": myParams = {"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret" } print buildConnectionString(myParams) David Robakowski Fachhochschule Wedel Python & PyDev
  • 32. Python OOP PyDev Fazit Paradigmen Gliederung 1 Python 2 OOP Geschichte Objektsystem Eigenschaften Klassen Sprachumfang Vererbung Paradigmen Metaklassen Einsatzgebiete 3 PyDev Vor- und Nachteile Zu PyDev 4 Fazit Mein Fazit David Robakowski Fachhochschule Wedel Python & PyDev
  • 33. Python OOP PyDev Fazit Paradigmen Programmierparadigmen Vollständige Unterstützung David Robakowski Fachhochschule Wedel Python & PyDev
  • 34. Python OOP PyDev Fazit Paradigmen Programmierparadigmen Vollständige Unterstützung Strukturierter Programmierung Module, Prozeduren und Funktionen David Robakowski Fachhochschule Wedel Python & PyDev
  • 35. Python OOP PyDev Fazit Paradigmen Programmierparadigmen Vollständige Unterstützung Strukturierter Programmierung Module, Prozeduren und Funktionen Objektorientierter Programmierung Klassen, Vererbung, spezielle Methoden... David Robakowski Fachhochschule Wedel Python & PyDev
  • 36. Python OOP PyDev Fazit Paradigmen Programmierparadigmen Vollständige Unterstützung Strukturierter Programmierung Module, Prozeduren und Funktionen Objektorientierter Programmierung Klassen, Vererbung, spezielle Methoden... Es gibt Spracheigenschaften aus David Robakowski Fachhochschule Wedel Python & PyDev
  • 37. Python OOP PyDev Fazit Paradigmen Programmierparadigmen Vollständige Unterstützung Strukturierter Programmierung Module, Prozeduren und Funktionen Objektorientierter Programmierung Klassen, Vererbung, spezielle Methoden... Es gibt Spracheigenschaften aus Funktionaler Programmierung Funktionen, Blöcke, Rekursion, Listen... David Robakowski Fachhochschule Wedel Python & PyDev
  • 38. Python OOP PyDev Fazit Paradigmen Programmierparadigmen Vollständige Unterstützung Strukturierter Programmierung Module, Prozeduren und Funktionen Objektorientierter Programmierung Klassen, Vererbung, spezielle Methoden... Es gibt Spracheigenschaften aus Funktionaler Programmierung Funktionen, Blöcke, Rekursion, Listen... Python ist eine Multiparadigmen Sprache David Robakowski Fachhochschule Wedel Python & PyDev
  • 39. Python OOP PyDev Fazit Paradigmen Programmierparadigmen Vollständige Unterstützung Strukturierter Programmierung Module, Prozeduren und Funktionen Objektorientierter Programmierung Klassen, Vererbung, spezielle Methoden... Es gibt Spracheigenschaften aus Funktionaler Programmierung Funktionen, Blöcke, Rekursion, Listen... Python ist eine Multiparadigmen Sprache erlaubt dem Benutzer das für das aktuelle Problem am besten passende Paradigma zu wählen David Robakowski Fachhochschule Wedel Python & PyDev
  • 40. Python OOP PyDev Fazit Paradigmen Programmierparadigmen Vollständige Unterstützung Strukturierter Programmierung Module, Prozeduren und Funktionen Objektorientierter Programmierung Klassen, Vererbung, spezielle Methoden... Es gibt Spracheigenschaften aus Funktionaler Programmierung Funktionen, Blöcke, Rekursion, Listen... Python ist eine Multiparadigmen Sprache erlaubt dem Benutzer das für das aktuelle Problem am besten passende Paradigma zu wählen der Benutzer kann mixen David Robakowski Fachhochschule Wedel Python & PyDev
  • 41. Python OOP PyDev Fazit Einsatzgebiete Gliederung 1 Python 2 OOP Geschichte Objektsystem Eigenschaften Klassen Sprachumfang Vererbung Paradigmen Metaklassen Einsatzgebiete 3 PyDev Vor- und Nachteile Zu PyDev 4 Fazit Mein Fazit David Robakowski Fachhochschule Wedel Python & PyDev
  • 42. Python OOP PyDev Fazit Einsatzgebiete Einsatzgebiete Viele bekannte Firmen und Institutionen setzen auf Python und fördern diese. Dazu gehören z.B.: Google, YouTube David Robakowski Fachhochschule Wedel Python & PyDev
  • 43. Python OOP PyDev Fazit Einsatzgebiete Einsatzgebiete Viele bekannte Firmen und Institutionen setzen auf Python und fördern diese. Dazu gehören z.B.: Google, YouTube NASA David Robakowski Fachhochschule Wedel Python & PyDev
  • 44. Python OOP PyDev Fazit Einsatzgebiete Einsatzgebiete Viele bekannte Firmen und Institutionen setzen auf Python und fördern diese. Dazu gehören z.B.: Google, YouTube NASA ... David Robakowski Fachhochschule Wedel Python & PyDev
  • 45. Python OOP PyDev Fazit Einsatzgebiete Einsatzgebiete Viele bekannte Firmen und Institutionen setzen auf Python und fördern diese. Dazu gehören z.B.: Google, YouTube NASA ... David Robakowski Fachhochschule Wedel Python & PyDev
  • 46. Python OOP PyDev Fazit Einsatzgebiete Einsatzgebiete Viele bekannte Firmen und Institutionen setzen auf Python und fördern diese. Dazu gehören z.B.: Google, YouTube NASA ... Eingesetzt wird Python hauptsächlich in den Bereichen: Prototyping Mit Python lassen sich sehr schnell Prototypen erstellen David Robakowski Fachhochschule Wedel Python & PyDev
  • 47. Python OOP PyDev Fazit Einsatzgebiete Einsatzgebiete Viele bekannte Firmen und Institutionen setzen auf Python und fördern diese. Dazu gehören z.B.: Google, YouTube NASA ... Eingesetzt wird Python hauptsächlich in den Bereichen: Prototyping Mit Python lassen sich sehr schnell Prototypen erstellen Embedded Skripting Interface Wird z.B. bei OpenOffice, Blender, Maya, PyMOL, SPSS und GIMP verwendet David Robakowski Fachhochschule Wedel Python & PyDev
  • 48. Python OOP PyDev Fazit Einsatzgebiete Einsatzgebiete Viele bekannte Firmen und Institutionen setzen auf Python und fördern diese. Dazu gehören z.B.: Google, YouTube NASA ... Eingesetzt wird Python hauptsächlich in den Bereichen: Prototyping Mit Python lassen sich sehr schnell Prototypen erstellen Embedded Skripting Interface Wird z.B. bei OpenOffice, Blender, Maya, PyMOL, SPSS und GIMP verwendet Web-Umfeld Hier gibt es zahlreiche Web-Frameworks mit denen sich in kürzester Zeit gut skalierbare Websites erstellen lassen. Dazu zählen etwa Frameworks wie: David Robakowski Fachhochschule Wedel Python & PyDev
  • 49. Python OOP PyDev Fazit Einsatzgebiete Einsatzgebiete Viele bekannte Firmen und Institutionen setzen auf Python und fördern diese. Dazu gehören z.B.: Google, YouTube NASA ... Eingesetzt wird Python hauptsächlich in den Bereichen: Prototyping Mit Python lassen sich sehr schnell Prototypen erstellen Embedded Skripting Interface Wird z.B. bei OpenOffice, Blender, Maya, PyMOL, SPSS und GIMP verwendet Web-Umfeld Hier gibt es zahlreiche Web-Frameworks mit denen sich in kürzester Zeit gut skalierbare Websites erstellen lassen. Dazu zählen etwa Frameworks wie: Django Ähnlich wie das bekannte Ruby On Rails Framework David Robakowski Fachhochschule Wedel Python & PyDev
  • 50. Python OOP PyDev Fazit Einsatzgebiete Einsatzgebiete Viele bekannte Firmen und Institutionen setzen auf Python und fördern diese. Dazu gehören z.B.: Google, YouTube NASA ... Eingesetzt wird Python hauptsächlich in den Bereichen: Prototyping Mit Python lassen sich sehr schnell Prototypen erstellen Embedded Skripting Interface Wird z.B. bei OpenOffice, Blender, Maya, PyMOL, SPSS und GIMP verwendet Web-Umfeld Hier gibt es zahlreiche Web-Frameworks mit denen sich in kürzester Zeit gut skalierbare Websites erstellen lassen. Dazu zählen etwa Frameworks wie: Django Ähnlich wie das bekannte Ruby On Rails Framework TurboGears Vergleichbar mit Django, soll jedoch besser für große Projekte geeignet sein David Robakowski Fachhochschule Wedel Python & PyDev
  • 51. Python OOP PyDev Fazit Einsatzgebiete Einsatzgebiete Viele bekannte Firmen und Institutionen setzen auf Python und fördern diese. Dazu gehören z.B.: Google, YouTube NASA ... Eingesetzt wird Python hauptsächlich in den Bereichen: Prototyping Mit Python lassen sich sehr schnell Prototypen erstellen Embedded Skripting Interface Wird z.B. bei OpenOffice, Blender, Maya, PyMOL, SPSS und GIMP verwendet Web-Umfeld Hier gibt es zahlreiche Web-Frameworks mit denen sich in kürzester Zeit gut skalierbare Websites erstellen lassen. Dazu zählen etwa Frameworks wie: Django Ähnlich wie das bekannte Ruby On Rails Framework TurboGears Vergleichbar mit Django, soll jedoch besser für große Projekte geeignet sein Google App Engine Bis zu einem gewissen Traffic sogar kostenloses Hosting David Robakowski Fachhochschule Wedel Python & PyDev
  • 52. Python OOP PyDev Fazit Vor- und Nachteile Gliederung 1 Python 2 OOP Geschichte Objektsystem Eigenschaften Klassen Sprachumfang Vererbung Paradigmen Metaklassen Einsatzgebiete 3 PyDev Vor- und Nachteile Zu PyDev 4 Fazit Mein Fazit David Robakowski Fachhochschule Wedel Python & PyDev
  • 53. Python OOP PyDev Fazit Vor- und Nachteile Vor- und Nachteile Vorteile: Kritik: Schnelles Testen durch interaktive Konsole möglich David Robakowski Fachhochschule Wedel Python & PyDev
  • 54. Python OOP PyDev Fazit Vor- und Nachteile Vor- und Nachteile Vorteile: Kritik: Schnelles Testen durch Fehleranfällig durch interaktive Konsole dynamische Typisierung; möglich Fehler werden erst zur Laufzeit erkannt David Robakowski Fachhochschule Wedel Python & PyDev
  • 55. Python OOP PyDev Fazit Vor- und Nachteile Vor- und Nachteile Vorteile: Kritik: Schnelles Testen durch Fehleranfällig durch interaktive Konsole dynamische Typisierung; möglich Fehler werden erst zur Klare, gut überschaubare Laufzeit erkannt und lesbare Syntax David Robakowski Fachhochschule Wedel Python & PyDev
  • 56. Python OOP PyDev Fazit Vor- und Nachteile Vor- und Nachteile Vorteile: Kritik: Schnelles Testen durch Fehleranfällig durch interaktive Konsole dynamische Typisierung; möglich Fehler werden erst zur Klare, gut überschaubare Laufzeit erkannt und lesbare Syntax Es werden Sprachelemente wie z.B. switch oder do-while vermisst David Robakowski Fachhochschule Wedel Python & PyDev
  • 57. Python OOP PyDev Fazit Vor- und Nachteile Vor- und Nachteile Vorteile: Kritik: Schnelles Testen durch Fehleranfällig durch interaktive Konsole dynamische Typisierung; möglich Fehler werden erst zur Klare, gut überschaubare Laufzeit erkannt und lesbare Syntax Es werden Sehr große Sprachelemente wie z.B. Standardbibliothek switch oder do-while vermisst David Robakowski Fachhochschule Wedel Python & PyDev
  • 58. Python OOP PyDev Fazit Objektsystem Gliederung 1 Python 2 OOP Geschichte Objektsystem Eigenschaften Klassen Sprachumfang Vererbung Paradigmen Metaklassen Einsatzgebiete 3 PyDev Vor- und Nachteile Zu PyDev 4 Fazit Mein Fazit David Robakowski Fachhochschule Wedel Python & PyDev
  • 59. Python OOP PyDev Fazit Objektsystem Objektsystem Old-Style Objekt-Modell New-Style Objekt-Modell Auch bekannt als „classic“ oder „legacy“ Objekt-Modell David Robakowski Fachhochschule Wedel Python & PyDev
  • 60. Python OOP PyDev Fazit Objektsystem Objektsystem Old-Style Objekt-Modell New-Style Objekt-Modell Auch bekannt als „classic“ oder „legacy“ Objekt-Modell In allen Python 2.x Versionen aus Kompatibilitätsgründen als Default eingestellt David Robakowski Fachhochschule Wedel Python & PyDev
  • 61. Python OOP PyDev Fazit Objektsystem Objektsystem Old-Style Objekt-Modell New-Style Objekt-Modell Auch bekannt als „classic“ oder „legacy“ Objekt-Modell In allen Python 2.x Versionen aus Kompatibilitätsgründen als Default eingestellt Klassen-Objekt ist vom Typ <type ’class’> David Robakowski Fachhochschule Wedel Python & PyDev
  • 62. Python OOP PyDev Fazit Objektsystem Objektsystem Old-Style Objekt-Modell New-Style Objekt-Modell Auch bekannt als „classic“ Einfacher, regulärer und oder „legacy“ Objekt-Modell mächtiger In allen Python 2.x Versionen aus Kompatibilitätsgründen als Default eingestellt Klassen-Objekt ist vom Typ <type ’class’> David Robakowski Fachhochschule Wedel Python & PyDev
  • 63. Python OOP PyDev Fazit Objektsystem Objektsystem Old-Style Objekt-Modell New-Style Objekt-Modell Auch bekannt als „classic“ Einfacher, regulärer und oder „legacy“ Objekt-Modell mächtiger In allen Python 2.x Versionen Klassen-Objekt ist von einem aus Kompatibilitätsgründen als anderen Typ, Default eingestellt <type ’type’> Klassen-Objekt ist vom Typ <type ’class’> David Robakowski Fachhochschule Wedel Python & PyDev
  • 64. Python OOP PyDev Fazit Objektsystem Objektsystem Old-Style Objekt-Modell New-Style Objekt-Modell Auch bekannt als „classic“ Einfacher, regulärer und oder „legacy“ Objekt-Modell mächtiger In allen Python 2.x Versionen Klassen-Objekt ist von einem aus Kompatibilitätsgründen als anderen Typ, Default eingestellt <type ’type’> Klassen-Objekt ist vom Typ In Zukunft, also ab Python 3.0, <type ’class’> werden nur noch New-Style Klassen erlaubt sein David Robakowski Fachhochschule Wedel Python & PyDev
  • 65. Python OOP PyDev Fazit Objektsystem Objektsystem Old-Style Objekt-Modell New-Style Objekt-Modell Auch bekannt als „classic“ Einfacher, regulärer und oder „legacy“ Objekt-Modell mächtiger In allen Python 2.x Versionen Klassen-Objekt ist von einem aus Kompatibilitätsgründen als anderen Typ, Default eingestellt <type ’type’> Klassen-Objekt ist vom Typ In Zukunft, also ab Python 3.0, <type ’class’> werden nur noch New-Style Klassen erlaubt sein David Robakowski Fachhochschule Wedel Python & PyDev
  • 66. Python OOP PyDev Fazit Objektsystem Objektsystem Old-Style Objekt-Modell New-Style Objekt-Modell Auch bekannt als „classic“ Einfacher, regulärer und oder „legacy“ Objekt-Modell mächtiger In allen Python 2.x Versionen Klassen-Objekt ist von einem aus Kompatibilitätsgründen als anderen Typ, Default eingestellt <type ’type’> Klassen-Objekt ist vom Typ In Zukunft, also ab Python 3.0, <type ’class’> werden nur noch New-Style Klassen erlaubt sein siehe Beispiel: „ex_object_models.py“ [4] David Robakowski Fachhochschule Wedel Python & PyDev
  • 67. Python OOP PyDev Fazit Klassen Gliederung 1 Python 2 OOP Geschichte Objektsystem Eigenschaften Klassen Sprachumfang Vererbung Paradigmen Metaklassen Einsatzgebiete 3 PyDev Vor- und Nachteile Zu PyDev 4 Fazit Mein Fazit David Robakowski Fachhochschule Wedel Python & PyDev
  • 68. Python OOP PyDev Fazit Klassen Klassen Klassen haben in Python unterschiedliche Eigenschaften: Klassen ohne Basis stellen eine „old-style Klasse“ dar David Robakowski Fachhochschule Wedel Python & PyDev
  • 69. Python OOP PyDev Fazit Klassen Klassen Klassen haben in Python unterschiedliche Eigenschaften: Klassen ohne Basis stellen eine „old-style Klasse“ dar Klassen lassen sich wie Funktionen aufrufen, gehören also zu den callable Typen David Robakowski Fachhochschule Wedel Python & PyDev
  • 70. Python OOP PyDev Fazit Klassen Klassen Klassen haben in Python unterschiedliche Eigenschaften: Klassen ohne Basis stellen eine „old-style Klasse“ dar Klassen lassen sich wie Funktionen aufrufen, gehören also zu den callable Typen Instanzierung erfolgt durch den Aufruf des Klassennamens David Robakowski Fachhochschule Wedel Python & PyDev
  • 71. Python OOP PyDev Fazit Klassen Klassen Klassen haben in Python unterschiedliche Eigenschaften: Klassen ohne Basis stellen eine „old-style Klasse“ dar Klassen lassen sich wie Funktionen aufrufen, gehören also zu den callable Typen Instanzierung erfolgt durch den Aufruf des Klassennamens Klassen besitzen Attribute welche „gebunden“ und referenziert werden können David Robakowski Fachhochschule Wedel Python & PyDev
  • 72. Python OOP PyDev Fazit Klassen Klassen Klassen haben in Python unterschiedliche Eigenschaften: Klassen ohne Basis stellen eine „old-style Klasse“ dar Klassen lassen sich wie Funktionen aufrufen, gehören also zu den callable Typen Instanzierung erfolgt durch den Aufruf des Klassennamens Klassen besitzen Attribute welche „gebunden“ und referenziert werden können Werte von Klassenattribute können einfache Datenobjekte, komplexere wie etwa Deskriptoren oder etwa spezielle Methoden sein David Robakowski Fachhochschule Wedel Python & PyDev
  • 73. Python OOP PyDev Fazit Klassen Klassen Klassen haben in Python unterschiedliche Eigenschaften: Klassen ohne Basis stellen eine „old-style Klasse“ dar Klassen lassen sich wie Funktionen aufrufen, gehören also zu den callable Typen Instanzierung erfolgt durch den Aufruf des Klassennamens Klassen besitzen Attribute welche „gebunden“ und referenziert werden können Werte von Klassenattribute können einfache Datenobjekte, komplexere wie etwa Deskriptoren oder etwa spezielle Methoden sein Das Verschachteln von Klassen ist möglich David Robakowski Fachhochschule Wedel Python & PyDev
  • 74. Python OOP PyDev Fazit Klassen Klassen Klassen haben in Python unterschiedliche Eigenschaften: Klassen ohne Basis stellen eine „old-style Klasse“ dar Klassen lassen sich wie Funktionen aufrufen, gehören also zu den callable Typen Instanzierung erfolgt durch den Aufruf des Klassennamens Klassen besitzen Attribute welche „gebunden“ und referenziert werden können Werte von Klassenattribute können einfache Datenobjekte, komplexere wie etwa Deskriptoren oder etwa spezielle Methoden sein Das Verschachteln von Klassen ist möglich Vererbung und Mehrfachvererbung werden unterstützt David Robakowski Fachhochschule Wedel Python & PyDev
  • 75. Python OOP PyDev Fazit Klassen Klassen II Klassen haben in Python unterschiedliche Eigenschaften: Zugriff auf Instanzen durch die Punktnotation David Robakowski Fachhochschule Wedel Python & PyDev
  • 76. Python OOP PyDev Fazit Klassen Klassen II Klassen haben in Python unterschiedliche Eigenschaften: Zugriff auf Instanzen durch die Punktnotation Es gibt static-, sowie class-Methoden David Robakowski Fachhochschule Wedel Python & PyDev
  • 77. Python OOP PyDev Fazit Klassen Klassen II Klassen haben in Python unterschiedliche Eigenschaften: Zugriff auf Instanzen durch die Punktnotation Es gibt static-, sowie class-Methoden gebundene und ungebundene Methoden David Robakowski Fachhochschule Wedel Python & PyDev
  • 78. Python OOP PyDev Fazit Klassen Klassen II Klassen haben in Python unterschiedliche Eigenschaften: Zugriff auf Instanzen durch die Punktnotation Es gibt static-, sowie class-Methoden gebundene und ungebundene Methoden Es lässt sich von anderen built-in Typen wie z.B. int oder dict erben David Robakowski Fachhochschule Wedel Python & PyDev
  • 79. Python OOP PyDev Fazit Klassen Klassen II Klassen haben in Python unterschiedliche Eigenschaften: Zugriff auf Instanzen durch die Punktnotation Es gibt static-, sowie class-Methoden gebundene und ungebundene Methoden Es lässt sich von anderen built-in Typen wie z.B. int oder dict erben Die Subklassenbeziehung ist transitiv David Robakowski Fachhochschule Wedel Python & PyDev
  • 80. Python OOP PyDev Fazit Klassen Klassen II Klassen haben in Python unterschiedliche Eigenschaften: Zugriff auf Instanzen durch die Punktnotation Es gibt static-, sowie class-Methoden gebundene und ungebundene Methoden Es lässt sich von anderen built-in Typen wie z.B. int oder dict erben Die Subklassenbeziehung ist transitiv if C2(C1) && C3(C2) => issubclass(C3, C1) == True David Robakowski Fachhochschule Wedel Python & PyDev
  • 81. Python OOP PyDev Fazit Klassen Klassen II Klassen haben in Python unterschiedliche Eigenschaften: Zugriff auf Instanzen durch die Punktnotation Es gibt static-, sowie class-Methoden gebundene und ungebundene Methoden Es lässt sich von anderen built-in Typen wie z.B. int oder dict erben Die Subklassenbeziehung ist transitiv if C2(C1) && C3(C2) => issubclass(C3, C1) == True David Robakowski Fachhochschule Wedel Python & PyDev
  • 82. Python OOP PyDev Fazit Klassen Klassen II Klassen haben in Python unterschiedliche Eigenschaften: Zugriff auf Instanzen durch die Punktnotation Es gibt static-, sowie class-Methoden gebundene und ungebundene Methoden Es lässt sich von anderen built-in Typen wie z.B. int oder dict erben Die Subklassenbeziehung ist transitiv if C2(C1) && C3(C2) => issubclass(C3, C1) == True siehe Beispiel: „ex_inherit_built_in_types_.py“ [4] David Robakowski Fachhochschule Wedel Python & PyDev
  • 83. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet David Robakowski Fachhochschule Wedel Python & PyDev
  • 84. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet Methoden werden auch als Attribute gehandhabt David Robakowski Fachhochschule Wedel Python & PyDev
  • 85. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet Methoden werden auch als Attribute gehandhabt David Robakowski Fachhochschule Wedel Python & PyDev
  • 86. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet Methoden werden auch als Attribute gehandhabt Bound an eine Instanz gebunden David Robakowski Fachhochschule Wedel Python & PyDev
  • 87. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet Methoden werden auch als Attribute gehandhabt Bound an eine Instanz gebunden David Robakowski Fachhochschule Wedel Python & PyDev
  • 88. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet Methoden werden auch als Attribute gehandhabt Bound an eine Instanz gebunden Unbound an eine Klasse gebunden David Robakowski Fachhochschule Wedel Python & PyDev
  • 89. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet Methoden werden auch als Attribute gehandhabt Bound an eine Instanz gebunden Unbound an eine Klasse gebunden Es lassen sich dynamisch Attribute hinzufügen, sowie löschen David Robakowski Fachhochschule Wedel Python & PyDev
  • 90. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet Methoden werden auch als Attribute gehandhabt Bound an eine Instanz gebunden Unbound an eine Klasse gebunden Es lassen sich dynamisch Attribute hinzufügen, sowie löschen Es gibt Klassen-/ und Instanz-Attribute David Robakowski Fachhochschule Wedel Python & PyDev
  • 91. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet Methoden werden auch als Attribute gehandhabt Bound an eine Instanz gebunden Unbound an eine Klasse gebunden Es lassen sich dynamisch Attribute hinzufügen, sowie löschen Es gibt Klassen-/ und Instanz-Attribute Es sind bereits implizit folgende Attribute vorhanden: David Robakowski Fachhochschule Wedel Python & PyDev
  • 92. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet Methoden werden auch als Attribute gehandhabt Bound an eine Instanz gebunden Unbound an eine Klasse gebunden Es lassen sich dynamisch Attribute hinzufügen, sowie löschen Es gibt Klassen-/ und Instanz-Attribute Es sind bereits implizit folgende Attribute vorhanden: David Robakowski Fachhochschule Wedel Python & PyDev
  • 93. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet Methoden werden auch als Attribute gehandhabt Bound an eine Instanz gebunden Unbound an eine Klasse gebunden Es lassen sich dynamisch Attribute hinzufügen, sowie löschen Es gibt Klassen-/ und Instanz-Attribute Es sind bereits implizit folgende Attribute vorhanden: __class__ Klassenobjekt zu dem die Instanz gehört David Robakowski Fachhochschule Wedel Python & PyDev
  • 94. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet Methoden werden auch als Attribute gehandhabt Bound an eine Instanz gebunden Unbound an eine Klasse gebunden Es lassen sich dynamisch Attribute hinzufügen, sowie löschen Es gibt Klassen-/ und Instanz-Attribute Es sind bereits implizit folgende Attribute vorhanden: __class__ Klassenobjekt zu dem die Instanz gehört David Robakowski Fachhochschule Wedel Python & PyDev
  • 95. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet Methoden werden auch als Attribute gehandhabt Bound an eine Instanz gebunden Unbound an eine Klasse gebunden Es lassen sich dynamisch Attribute hinzufügen, sowie löschen Es gibt Klassen-/ und Instanz-Attribute Es sind bereits implizit folgende Attribute vorhanden: __class__ Klassenobjekt zu dem die Instanz gehört __dict__ Dictionary für die Attribute David Robakowski Fachhochschule Wedel Python & PyDev
  • 96. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet Methoden werden auch als Attribute gehandhabt Bound an eine Instanz gebunden Unbound an eine Klasse gebunden Es lassen sich dynamisch Attribute hinzufügen, sowie löschen Es gibt Klassen-/ und Instanz-Attribute Es sind bereits implizit folgende Attribute vorhanden: __class__ Klassenobjekt zu dem die Instanz gehört __dict__ Dictionary für die Attribute David Robakowski Fachhochschule Wedel Python & PyDev
  • 97. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet Methoden werden auch als Attribute gehandhabt Bound an eine Instanz gebunden Unbound an eine Klasse gebunden Es lassen sich dynamisch Attribute hinzufügen, sowie löschen Es gibt Klassen-/ und Instanz-Attribute Es sind bereits implizit folgende Attribute vorhanden: __class__ Klassenobjekt zu dem die Instanz gehört __dict__ Dictionary für die Attribute __name__ Name der Klasse David Robakowski Fachhochschule Wedel Python & PyDev
  • 98. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet Methoden werden auch als Attribute gehandhabt Bound an eine Instanz gebunden Unbound an eine Klasse gebunden Es lassen sich dynamisch Attribute hinzufügen, sowie löschen Es gibt Klassen-/ und Instanz-Attribute Es sind bereits implizit folgende Attribute vorhanden: __class__ Klassenobjekt zu dem die Instanz gehört __dict__ Dictionary für die Attribute __name__ Name der Klasse David Robakowski Fachhochschule Wedel Python & PyDev
  • 99. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet Methoden werden auch als Attribute gehandhabt Bound an eine Instanz gebunden Unbound an eine Klasse gebunden Es lassen sich dynamisch Attribute hinzufügen, sowie löschen Es gibt Klassen-/ und Instanz-Attribute Es sind bereits implizit folgende Attribute vorhanden: __class__ Klassenobjekt zu dem die Instanz gehört __dict__ Dictionary für die Attribute __name__ Name der Klasse __bases__ Liste aller Basisklassen David Robakowski Fachhochschule Wedel Python & PyDev
  • 100. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet Methoden werden auch als Attribute gehandhabt Bound an eine Instanz gebunden Unbound an eine Klasse gebunden Es lassen sich dynamisch Attribute hinzufügen, sowie löschen Es gibt Klassen-/ und Instanz-Attribute Es sind bereits implizit folgende Attribute vorhanden: __class__ Klassenobjekt zu dem die Instanz gehört __dict__ Dictionary für die Attribute __name__ Name der Klasse __bases__ Liste aller Basisklassen David Robakowski Fachhochschule Wedel Python & PyDev
  • 101. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet Methoden werden auch als Attribute gehandhabt Bound an eine Instanz gebunden Unbound an eine Klasse gebunden Es lassen sich dynamisch Attribute hinzufügen, sowie löschen Es gibt Klassen-/ und Instanz-Attribute Es sind bereits implizit folgende Attribute vorhanden: __class__ Klassenobjekt zu dem die Instanz gehört __dict__ Dictionary für die Attribute __name__ Name der Klasse __bases__ Liste aller Basisklassen __doc__ Beinhaltet den „Doc-String“ David Robakowski Fachhochschule Wedel Python & PyDev
  • 102. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet Methoden werden auch als Attribute gehandhabt Bound an eine Instanz gebunden Unbound an eine Klasse gebunden Es lassen sich dynamisch Attribute hinzufügen, sowie löschen Es gibt Klassen-/ und Instanz-Attribute Es sind bereits implizit folgende Attribute vorhanden: __class__ Klassenobjekt zu dem die Instanz gehört __dict__ Dictionary für die Attribute __name__ Name der Klasse __bases__ Liste aller Basisklassen __doc__ Beinhaltet den „Doc-String“ David Robakowski Fachhochschule Wedel Python & PyDev
  • 103. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet Methoden werden auch als Attribute gehandhabt Bound an eine Instanz gebunden Unbound an eine Klasse gebunden Es lassen sich dynamisch Attribute hinzufügen, sowie löschen Es gibt Klassen-/ und Instanz-Attribute Es sind bereits implizit folgende Attribute vorhanden: __class__ Klassenobjekt zu dem die Instanz gehört __dict__ Dictionary für die Attribute __name__ Name der Klasse __bases__ Liste aller Basisklassen __doc__ Beinhaltet den „Doc-String“ siehe Beispiel: „ex_attributes.py“ [4] David Robakowski Fachhochschule Wedel Python & PyDev
  • 104. Python OOP PyDev Fazit Klassen Kapselung von Attributen Python ermöglicht keine „richtige“ Datenkapselung, es handelt sich eher um Konventionen David Robakowski Fachhochschule Wedel Python & PyDev
  • 105. Python OOP PyDev Fazit Klassen Kapselung von Attributen Python ermöglicht keine „richtige“ Datenkapselung, es handelt sich eher um Konventionen Folgende Konventionen sollten eingehalten werden: David Robakowski Fachhochschule Wedel Python & PyDev
  • 106. Python OOP PyDev Fazit Klassen Kapselung von Attributen Python ermöglicht keine „richtige“ Datenkapselung, es handelt sich eher um Konventionen Folgende Konventionen sollten eingehalten werden: David Robakowski Fachhochschule Wedel Python & PyDev
  • 107. Python OOP PyDev Fazit Klassen Kapselung von Attributen Python ermöglicht keine „richtige“ Datenkapselung, es handelt sich eher um Konventionen Folgende Konventionen sollten eingehalten werden: public: Per Default alle Attribute David Robakowski Fachhochschule Wedel Python & PyDev
  • 108. Python OOP PyDev Fazit Klassen Kapselung von Attributen Python ermöglicht keine „richtige“ Datenkapselung, es handelt sich eher um Konventionen Folgende Konventionen sollten eingehalten werden: public: Per Default alle Attribute David Robakowski Fachhochschule Wedel Python & PyDev
  • 109. Python OOP PyDev Fazit Klassen Kapselung von Attributen Python ermöglicht keine „richtige“ Datenkapselung, es handelt sich eher um Konventionen Folgende Konventionen sollten eingehalten werden: public: Per Default alle Attribute protected / weak: Einfaches „_“ Zeichen leitet protected ein, also z.B. _name Werden nicht in den Namensraum eingebunden, sind jedoch über den Namen erreichbar David Robakowski Fachhochschule Wedel Python & PyDev
  • 110. Python OOP PyDev Fazit Klassen Kapselung von Attributen Python ermöglicht keine „richtige“ Datenkapselung, es handelt sich eher um Konventionen Folgende Konventionen sollten eingehalten werden: public: Per Default alle Attribute protected / weak: Einfaches „_“ Zeichen leitet protected ein, also z.B. _name Werden nicht in den Namensraum eingebunden, sind jedoch über den Namen erreichbar David Robakowski Fachhochschule Wedel Python & PyDev
  • 111. Python OOP PyDev Fazit Klassen Kapselung von Attributen Python ermöglicht keine „richtige“ Datenkapselung, es handelt sich eher um Konventionen Folgende Konventionen sollten eingehalten werden: public: Per Default alle Attribute protected / weak: Einfaches „_“ Zeichen leitet protected ein, also z.B. _name Werden nicht in den Namensraum eingebunden, sind jedoch über den Namen erreichbar private / strong: Doppelte „_“ Zeichen leiten private ein, also z.B. __name Werden vom Interpreter in _ClassName__name umbenannt David Robakowski Fachhochschule Wedel Python & PyDev
  • 112. Python OOP PyDev Fazit Klassen Kapselung von Attributen Python ermöglicht keine „richtige“ Datenkapselung, es handelt sich eher um Konventionen Folgende Konventionen sollten eingehalten werden: public: Per Default alle Attribute protected / weak: Einfaches „_“ Zeichen leitet protected ein, also z.B. _name Werden nicht in den Namensraum eingebunden, sind jedoch über den Namen erreichbar private / strong: Doppelte „_“ Zeichen leiten private ein, also z.B. __name Werden vom Interpreter in _ClassName__name umbenannt David Robakowski Fachhochschule Wedel Python & PyDev
  • 113. Python OOP PyDev Fazit Klassen Kapselung von Attributen Python ermöglicht keine „richtige“ Datenkapselung, es handelt sich eher um Konventionen Folgende Konventionen sollten eingehalten werden: public: Per Default alle Attribute protected / weak: Einfaches „_“ Zeichen leitet protected ein, also z.B. _name Werden nicht in den Namensraum eingebunden, sind jedoch über den Namen erreichbar private / strong: Doppelte „_“ Zeichen leiten private ein, also z.B. __name Werden vom Interpreter in _ClassName__name umbenannt siehe Beispiel: „ex_encapsulation.py“ [4] David Robakowski Fachhochschule Wedel Python & PyDev
  • 114. Python OOP PyDev Fazit Klassen Deskriptoren Spezielle new-style Objekte, dessen Klasse eine Methode __get__ implementiert David Robakowski Fachhochschule Wedel Python & PyDev
  • 115. Python OOP PyDev Fazit Klassen Deskriptoren Spezielle new-style Objekte, dessen Klasse eine Methode __get__ implementiert Übernehmen als Klassenattribut die Zugriffsteuerung auf diese Instanz David Robakowski Fachhochschule Wedel Python & PyDev
  • 116. Python OOP PyDev Fazit Klassen Deskriptoren Spezielle new-style Objekte, dessen Klasse eine Methode __get__ implementiert Übernehmen als Klassenattribut die Zugriffsteuerung auf diese Instanz Unterteilt in: David Robakowski Fachhochschule Wedel Python & PyDev
  • 117. Python OOP PyDev Fazit Klassen Deskriptoren Spezielle new-style Objekte, dessen Klasse eine Methode __get__ implementiert Übernehmen als Klassenattribut die Zugriffsteuerung auf diese Instanz Unterteilt in: David Robakowski Fachhochschule Wedel Python & PyDev
  • 118. Python OOP PyDev Fazit Klassen Deskriptoren Spezielle new-style Objekte, dessen Klasse eine Methode __get__ implementiert Übernehmen als Klassenattribut die Zugriffsteuerung auf diese Instanz Unterteilt in: overriding descriptor implementieren zusätzlich die __set__ Methode Auch Daten-Deskriptor genannt David Robakowski Fachhochschule Wedel Python & PyDev
  • 119. Python OOP PyDev Fazit Klassen Deskriptoren Spezielle new-style Objekte, dessen Klasse eine Methode __get__ implementiert Übernehmen als Klassenattribut die Zugriffsteuerung auf diese Instanz Unterteilt in: overriding descriptor implementieren zusätzlich die __set__ Methode Auch Daten-Deskriptor genannt David Robakowski Fachhochschule Wedel Python & PyDev
  • 120. Python OOP PyDev Fazit Klassen Deskriptoren Spezielle new-style Objekte, dessen Klasse eine Methode __get__ implementiert Übernehmen als Klassenattribut die Zugriffsteuerung auf diese Instanz Unterteilt in: overriding descriptor implementieren zusätzlich die __set__ Methode Auch Daten-Deskriptor genannt non-overriding descriptor z.B. Funktionsobjekte David Robakowski Fachhochschule Wedel Python & PyDev
  • 121. Python OOP PyDev Fazit Klassen Deskriptoren Spezielle new-style Objekte, dessen Klasse eine Methode __get__ implementiert Übernehmen als Klassenattribut die Zugriffsteuerung auf diese Instanz Unterteilt in: overriding descriptor implementieren zusätzlich die __set__ Methode Auch Daten-Deskriptor genannt non-overriding descriptor z.B. Funktionsobjekte Finden Anwendung bei Funktionen, Eigenschaften, super(), Statische-, Klassenmethoden und sogar bei Klassen David Robakowski Fachhochschule Wedel Python & PyDev
  • 122. Python OOP PyDev Fazit Klassen Deskriptoren Spezielle new-style Objekte, dessen Klasse eine Methode __get__ implementiert Übernehmen als Klassenattribut die Zugriffsteuerung auf diese Instanz Unterteilt in: overriding descriptor implementieren zusätzlich die __set__ Methode Auch Daten-Deskriptor genannt non-overriding descriptor z.B. Funktionsobjekte Finden Anwendung bei Funktionen, Eigenschaften, super(), Statische-, Klassenmethoden und sogar bei Klassen David Robakowski Fachhochschule Wedel Python & PyDev
  • 123. Python OOP PyDev Fazit Klassen Deskriptoren Spezielle new-style Objekte, dessen Klasse eine Methode __get__ implementiert Übernehmen als Klassenattribut die Zugriffsteuerung auf diese Instanz Unterteilt in: overriding descriptor implementieren zusätzlich die __set__ Methode Auch Daten-Deskriptor genannt non-overriding descriptor z.B. Funktionsobjekte Finden Anwendung bei Funktionen, Eigenschaften, super(), Statische-, Klassenmethoden und sogar bei Klassen siehe Beispiel: „ex_descriptors.py“ [4] David Robakowski Fachhochschule Wedel Python & PyDev
  • 124. Python OOP PyDev Fazit Klassen Funktionen und Methoden Das erste Argument enthält die Objektinstanz David Robakowski Fachhochschule Wedel Python & PyDev
  • 125. Python OOP PyDev Fazit Klassen Funktionen und Methoden Das erste Argument enthält die Objektinstanz Per Konvention self genannt David Robakowski Fachhochschule Wedel Python & PyDev
  • 126. Python OOP PyDev Fazit Klassen Funktionen und Methoden Das erste Argument enthält die Objektinstanz Per Konvention self genannt Eine Klasse kann spezielle Methoden enthalten, welche die Form __xxx__ haben David Robakowski Fachhochschule Wedel Python & PyDev
  • 127. Python OOP PyDev Fazit Klassen Funktionen und Methoden Das erste Argument enthält die Objektinstanz Per Konvention self genannt Eine Klasse kann spezielle Methoden enthalten, welche die Form __xxx__ haben Um den Aufruf als Methode zu unterstützen, enthalten Funktionen die __get__ Methode David Robakowski Fachhochschule Wedel Python & PyDev
  • 128. Python OOP PyDev Fazit Klassen Funktionen und Methoden Das erste Argument enthält die Objektinstanz Per Konvention self genannt Eine Klasse kann spezielle Methoden enthalten, welche die Form __xxx__ haben Um den Aufruf als Methode zu unterstützen, enthalten Funktionen die __get__ Methode Alle Funktionen stellen non-overriding Deskriptoren dar, die gebundene oder ungebundene Methoden zurückgeben David Robakowski Fachhochschule Wedel Python & PyDev
  • 129. Python OOP PyDev Fazit Klassen Funktionen und Methoden Das erste Argument enthält die Objektinstanz Per Konvention self genannt Eine Klasse kann spezielle Methoden enthalten, welche die Form __xxx__ haben Um den Aufruf als Methode zu unterstützen, enthalten Funktionen die __get__ Methode Alle Funktionen stellen non-overriding Deskriptoren dar, die gebundene oder ungebundene Methoden zurückgeben David Robakowski Fachhochschule Wedel Python & PyDev
  • 130. Python OOP PyDev Fazit Klassen Funktionen und Methoden Das erste Argument enthält die Objektinstanz Per Konvention self genannt Eine Klasse kann spezielle Methoden enthalten, welche die Form __xxx__ haben Um den Aufruf als Methode zu unterstützen, enthalten Funktionen die __get__ Methode Alle Funktionen stellen non-overriding Deskriptoren dar, die gebundene oder ungebundene Methoden zurückgeben siehe Beispiel: „ex_descriptors.py“ [4] David Robakowski Fachhochschule Wedel Python & PyDev
  • 131. Python OOP PyDev Fazit Klassen Properties, Statische und Klassenmethoden Werden über Deskriptoren realisiert David Robakowski Fachhochschule Wedel Python & PyDev
  • 132. Python OOP PyDev Fazit Klassen Properties, Statische und Klassenmethoden Werden über Deskriptoren realisiert Werden an Klassenattribute gebunden David Robakowski Fachhochschule Wedel Python & PyDev
  • 133. Python OOP PyDev Fazit Klassen Properties, Statische und Klassenmethoden Werden über Deskriptoren realisiert Werden an Klassenattribute gebunden David Robakowski Fachhochschule Wedel Python & PyDev
  • 134. Python OOP PyDev Fazit Klassen Properties, Statische und Klassenmethoden Werden über Deskriptoren realisiert Werden an Klassenattribute gebunden property Data-Deskriptor property(fget=None, fset=None, fdel=None, doc=None) Read-only einfach möglich durch Nichtsetzen von fset Vorteile, keine Statements wie c.setCnt(c.getCnt( ) + 1) David Robakowski Fachhochschule Wedel Python & PyDev
  • 135. Python OOP PyDev Fazit Klassen Properties, Statische und Klassenmethoden Werden über Deskriptoren realisiert Werden an Klassenattribute gebunden property Data-Deskriptor property(fget=None, fset=None, fdel=None, doc=None) Read-only einfach möglich durch Nichtsetzen von fset Vorteile, keine Statements wie c.setCnt(c.getCnt( ) + 1) David Robakowski Fachhochschule Wedel Python & PyDev
  • 136. Python OOP PyDev Fazit Klassen Properties, Statische und Klassenmethoden Werden über Deskriptoren realisiert Werden an Klassenattribute gebunden property Data-Deskriptor property(fget=None, fset=None, fdel=None, doc=None) Read-only einfach möglich durch Nichtsetzen von fset Vorteile, keine Statements wie c.setCnt(c.getCnt( ) + 1) staticmethod non-overriding Deskriptor In Java vergleichbar mit static Gibt zu Grunde liegende Funktion ohne Änderung zurück staticmethod(f) David Robakowski Fachhochschule Wedel Python & PyDev
  • 137. Python OOP PyDev Fazit Klassen Properties, Statische und Klassenmethoden II David Robakowski Fachhochschule Wedel Python & PyDev
  • 138. Python OOP PyDev Fazit Klassen Properties, Statische und Klassenmethoden II classmethod non-overriding Deskriptor Erstes Argument wird an das Klassenobjekt gebunden Per Konvention cls genannt Kann durch Instanz- oder Klassenobjekt aufgerufen werden classmethod(f) David Robakowski Fachhochschule Wedel Python & PyDev
  • 139. Python OOP PyDev Fazit Klassen Properties, Statische und Klassenmethoden II classmethod non-overriding Deskriptor Erstes Argument wird an das Klassenobjekt gebunden Per Konvention cls genannt Kann durch Instanz- oder Klassenobjekt aufgerufen werden classmethod(f) David Robakowski Fachhochschule Wedel Python & PyDev
  • 140. Python OOP PyDev Fazit Klassen Properties, Statische und Klassenmethoden II classmethod non-overriding Deskriptor Erstes Argument wird an das Klassenobjekt gebunden Per Konvention cls genannt Kann durch Instanz- oder Klassenobjekt aufgerufen werden classmethod(f) siehe Beispiel: „ex_properties_class-level.py“ [4] David Robakowski Fachhochschule Wedel Python & PyDev
  • 141. Python OOP PyDev Fazit Vererbung Gliederung 1 Python 2 OOP Geschichte Objektsystem Eigenschaften Klassen Sprachumfang Vererbung Paradigmen Metaklassen Einsatzgebiete 3 PyDev Vor- und Nachteile Zu PyDev 4 Fazit Mein Fazit David Robakowski Fachhochschule Wedel Python & PyDev
  • 142. Python OOP PyDev Fazit Vererbung Method Resolution Order Vererbung, sowie Mehrfachvererbung werden unterstützt David Robakowski Fachhochschule Wedel Python & PyDev
  • 143. Python OOP PyDev Fazit Vererbung Method Resolution Order Vererbung, sowie Mehrfachvererbung werden unterstützt class Name(bases, ...) David Robakowski Fachhochschule Wedel Python & PyDev
  • 144. Python OOP PyDev Fazit Vererbung Method Resolution Order Vererbung, sowie Mehrfachvererbung werden unterstützt class Name(bases, ...) Es lassen sich Methoden, sowie Attribute überschreiben David Robakowski Fachhochschule Wedel Python & PyDev
  • 145. Python OOP PyDev Fazit Vererbung Method Resolution Order Vererbung, sowie Mehrfachvererbung werden unterstützt class Name(bases, ...) Es lassen sich Methoden, sowie Attribute überschreiben Durch die Mehrfachvererbung entsteht die Frage nach MRO David Robakowski Fachhochschule Wedel Python & PyDev
  • 146. Python OOP PyDev Fazit Vererbung Method Resolution Order Vererbung, sowie Mehrfachvererbung werden unterstützt class Name(bases, ...) Es lassen sich Methoden, sowie Attribute überschreiben Durch die Mehrfachvererbung entsteht die Frage nach MRO Standardmäßig werden Attribute, Methoden in __dict__ von links nach rechts gesucht David Robakowski Fachhochschule Wedel Python & PyDev
  • 147. Python OOP PyDev Fazit Vererbung Method Resolution Order Vererbung, sowie Mehrfachvererbung werden unterstützt class Name(bases, ...) Es lassen sich Methoden, sowie Attribute überschreiben Durch die Mehrfachvererbung entsteht die Frage nach MRO Standardmäßig werden Attribute, Methoden in __dict__ von links nach rechts gesucht Wenn Schlüssel nicht gefunden wird, wird die Suche auf __bases__ fortgeführt David Robakowski Fachhochschule Wedel Python & PyDev
  • 148. Python OOP PyDev Fazit Vererbung Method Resolution Order Vererbung, sowie Mehrfachvererbung werden unterstützt class Name(bases, ...) Es lassen sich Methoden, sowie Attribute überschreiben Durch die Mehrfachvererbung entsteht die Frage nach MRO Standardmäßig werden Attribute, Methoden in __dict__ von links nach rechts gesucht Wenn Schlüssel nicht gefunden wird, wird die Suche auf __bases__ fortgeführt Unterschiedlich in old-style und new-style David Robakowski Fachhochschule Wedel Python & PyDev
  • 149. Python OOP PyDev Fazit Vererbung Method Resolution Order - classic Figure 5-1 [1] Links nach rechts, tiefenorientiertes Suchverfahren David Robakowski Fachhochschule Wedel Python & PyDev