Python & PyDev

2,095 views
1,979 views

Published on

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,095
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Python & PyDev

  1. 1. Python OOP PyDev Fazit Alternative objektorientiere Programmiersprachen Python & PyDev David Robakowski Fachhochschule Wedel Juli 11, 2009 David Robakowski Fachhochschule Wedel Python & PyDev
  2. 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. 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. 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. 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. 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. 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. 8. Python OOP PyDev Fazit Eigenschaften Eigenschaften von Python Simpel Schnell, einfach und übersichtlich(Einrückung) programmieren David Robakowski Fachhochschule Wedel Python & PyDev
  9. 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. 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. 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. 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. 13. Python OOP PyDev Fazit Eigenschaften Eigenschaften von Python II Objektorientiert Sehr flexibel und mächtig David Robakowski Fachhochschule Wedel Python & PyDev
  14. 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. 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. 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. 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. 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. 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. 20. Python OOP PyDev Fazit Sprachumfang Datentypen Python ist dynamisch getypt, es gibt also keine explizite Datentypdeklaration David Robakowski Fachhochschule Wedel Python & PyDev
  21. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 33. Python OOP PyDev Fazit Paradigmen Programmierparadigmen Vollständige Unterstützung David Robakowski Fachhochschule Wedel Python & PyDev
  34. 34. Python OOP PyDev Fazit Paradigmen Programmierparadigmen Vollständige Unterstützung Strukturierter Programmierung Module, Prozeduren und Funktionen David Robakowski Fachhochschule Wedel Python & PyDev
  35. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 83. Python OOP PyDev Fazit Klassen Attribute Alle Attribute werden in einem Dictionary __dict__ verwaltet David Robakowski Fachhochschule Wedel Python & PyDev
  84. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 114. Python OOP PyDev Fazit Klassen Deskriptoren Spezielle new-style Objekte, dessen Klasse eine Methode __get__ implementiert David Robakowski Fachhochschule Wedel Python & PyDev
  115. 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. 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. 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. 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. 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. 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. 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. 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. 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. 124. Python OOP PyDev Fazit Klassen Funktionen und Methoden Das erste Argument enthält die Objektinstanz David Robakowski Fachhochschule Wedel Python & PyDev
  125. 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. 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. 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. 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. 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. 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. 131. Python OOP PyDev Fazit Klassen Properties, Statische und Klassenmethoden Werden über Deskriptoren realisiert David Robakowski Fachhochschule Wedel Python & PyDev
  132. 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. 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. 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. 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. 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. 137. Python OOP PyDev Fazit Klassen Properties, Statische und Klassenmethoden II David Robakowski Fachhochschule Wedel Python & PyDev
  138. 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. 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. 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. 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. 142. Python OOP PyDev Fazit Vererbung Method Resolution Order Vererbung, sowie Mehrfachvererbung werden unterstützt David Robakowski Fachhochschule Wedel Python & PyDev
  143. 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. 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. 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. 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. 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. 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. 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

×