Seite 1 von 1

Klassen und ihre Methoden

Verfasst: Donnerstag 18. Februar 2010, 16:45
von Mr.Wolna
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

Verfasst: Donnerstag 18. Februar 2010, 16:52
von derdon
Ja.

Edit: um genau zu sein: laut PEP8 *sollte* man self wählen, es ist aber auch jeder andere gültige Name möglich.

Re: Klassen und ihre Methoden

Verfasst: Donnerstag 18. Februar 2010, 16:52
von CM
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

Verfasst: Donnerstag 18. Februar 2010, 16:54
von Mr.Wolna
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?

Verfasst: Donnerstag 18. Februar 2010, 16:56
von Klip
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`.

Verfasst: Donnerstag 18. Februar 2010, 17:00
von Mr.Wolna
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?

Verfasst: Donnerstag 18. Februar 2010, 17:09
von derdon
@ ist dazu da, Funktionen "einzupacken", siehe auch Decorators.

Verfasst: Samstag 20. Februar 2010, 12:10
von sma
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