* Python 3 kennt mehrer Arten von Methoden * die verschiedenen Arten enstehen durch Nutzung unterschiedlicher Dekoratoren * jede Klasse ist selbst ein Objekt in Python * jede Methode ist ein eigenes Objekt in Python ====== Objekt-Methoden ====== * Können nur nach Instanzierung angesprochen werden * bekommen Pointer auf das Objekt übergeben * die "normalen" Methoden * Zugriff auf Klassen- und Objektvariablen class static_test: my_string = "Peter" def ausgabe(self): print("Ausgabe", self.my_string) def caller(self): self.ausgabe() a = static_test() a.ausgabe() ====== Static Method ====== * Methoden die zwar Teil einer Klasse sind, aber weder Informationen über das Objekt, noch über die Klasse benötigen von der sie Teil sind * Methode kann sowohl über die Klasse, als auch über ein Objekt aufgerufen werden * Kein Zugriff auf Objekt-/Klassenvariablen class static_test: my_string = "Peter" @staticmethod def ausgabe(): print("Ausgabe") def caller(self): self.ausgabe() static_test.ausgabe() a = static_test() a.ausgabe() ====== Class Method ====== * Methoden die an die Klasse "gebunden" sind * Können über Klasse oder über Objekt aufgerufen werden * bekommen eine Referenz auf die Klasse als ersten Parameter übergeben * Zugriff auf Klassenvariablen class static_test: my_string = "Peter" @classmethod def ausgabe(cls): print("Ausgabe", cls.my_string) def caller(self): self.ausgabe() static_test.ausgabe() a = static_test() a.ausgabe()