Klassen und ihre Methoden

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Mr.Wolna
User
Beiträge: 93
Registriert: Dienstag 6. Oktober 2009, 17:43

Ich habe mich jetzt mühselig zu dem Kapitel OOP vorgearbeitet:

Eine simple Frage vorab, um von vorne herein jedes Missverständnis zu beseitigen.

Muss jede Methode einer Klasse mit dem Parameter self anfangen?

Bitte erspart euch Verlinkungen und Kommentare ejder Art.

Ein einfaches JA oder NEIN genügt mir hier. Dann kann von mir aus geschlossen werden.

MfG,
Mr.Wolna
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Ja.

Edit: um genau zu sein: laut PEP8 *sollte* man self wählen, es ist aber auch jeder andere gültige Name möglich.
Zuletzt geändert von derdon am Donnerstag 18. Februar 2010, 16:53, insgesamt 1-mal geändert.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Mr.Wolna hat geschrieben:Ein einfaches JA oder NEIN genügt mir hier. Dann kann von mir aus geschlossen werden.
Nein - Aber genau diese Antwort wird Dich nicht weiterbringen, wenn Du nicht das Konzept verstanden hast. Darf man - ganz zaghaft - fragen, wo das Problem liegt? Vielleicht kann man Dir doch mit etwas mehr Detail weiterhelfen?

Gruß,
Christian
Mr.Wolna
User
Beiträge: 93
Registriert: Dienstag 6. Oktober 2009, 17:43

Mehr wollte ich nicht Wissen. Danke schön!

Nun kann ich von vorne herein Fehler vermeiden. :lol:

MFG

edit zu dem edits:

Es ist nichts spezielles, ich will einfach von vorne RICHTIG an die Sache herangehen. Wie gesagt ich beschäftige mich mit OOP bzw. Klassen erst seit Heute. Als wie ist es, es muss immer erst ein Parameter self stehen?= Der kann dann aber auch andere Namen haben? Oder wie darf ich das verstehen?
Zuletzt geändert von Mr.Wolna am Donnerstag 18. Februar 2010, 16:57, insgesamt 1-mal geändert.
Benutzeravatar
Klip
User
Beiträge: 98
Registriert: Donnerstag 10. August 2006, 20:39

Jein.

Eine normale Methode muss einen Parameter definieren, der das Objekt selbst annimmt (dieser Parameter wird per Konvention `self`genannt, man muss ihn aber nicht so nennen. `self` ist kein Keyword. Es ist allerdings selten eine gute Idee diese Konvention zu brechen).

Es gibt statische Methoden (`@staticmethod`), wo ein Parameter dieser Art nicht erwartet wird.

Schließlich gibt es da noch die `@classmethod` ;)

In den meisten Fällen suchst du eine Methode mit `self`.
Mr.Wolna
User
Beiträge: 93
Registriert: Dienstag 6. Oktober 2009, 17:43

Also mal alles zusammengefasst:

Es sit eigentlich ÜBLICH und IN DEN MEISTEN FÄLLEN, das self benutzen wird. Self an sich ist aber kein KEYWORD, sprich kann im Namen variieren. Es gehört aber... sagen wir mal zu guter akkurater Programmierschule und hat sich durchgesetzt, self zu nehmen. Stimmt das soweit?

Edit: Ehm, Mit @ habe ich schon mal zu tun gehabt, in Ruby. Dachte das ist das selbe wie SELF, bloß halt eben in Ruby. Also gibt es das @ auch in Python? Und wird es genauso verwendet?
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

@ ist dazu da, Funktionen "einzupacken", siehe auch Decorators.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Das @ in Ruby hat eine komplett andere Bedeutung als das "self" in Python. Er hat den Stellenwert wie das $ in Ruby, ist als Syntax für einen bestimmten Variablentyp.

Stefan
Antworten