Matroids Matheplanet Forum Index
Moderiert von Bilbo matph
Informatik » Angewandte Informatik » Python Rolle von self
Autor
Schule Python Rolle von self
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2628
  Themenstart: 2021-09-21

Hallo, kann mir jemand kurz die Rolle von "self" am Programm erklären? Das Programm ist nicht von mir, es scheint auch nicht 100% zu funktionieren. \sourceon Python Tkinter \numberson import tkinter as tk #window = tk.Tk() #label_gruss = tk.Label(window, text="Hallo") #label_gruss.pack(padx=30,pady=20) #window.mainloop() class Application(tk.Frame): def __init__(self, master=None): super().__init__(master) self.master = master self.pack(padx=50,pady=60) self.create_widgets() def create_widgets(self): self.hi_there = tk.Button(self) self.hi_there["text"] = "Hello World\n(click me)" self.hi_there["command"] = self.say_hi self.hi_there.pack(side="top") self.quit = tk.Button(self, text="QUIT", fg="red", command=self.master.destroy) self.quit.pack(side="bottom") def say_hi(self): print("hi there, everyone!") root = tk.Tk() app = Application(master=root) app.mainloop() \sourceoff self ist offensichtlich ein Befehl. Was bedeutet er? Seltsam auch, dass der Programmator das "hi there, everyone" in die Konsole schreiben lässt, statt in das Fenster, was er bestimmt wollte. Und dass, nachdem man auf Quit drückt, der Quit-Button Blau wird, erkenne ich auch nirgends, und danach klemmt das Programm sowieso - aber an fehlerhaften Programmen lernt man...


   Profil
DerEinfaeltige
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 11.02.2015
Mitteilungen: 3042
  Beitrag No.1, eingetragen 2021-09-21

self ist offensichtlich KEIN Befehl, sondern ein Variablenname. Üblicherweise der Variablenname, den man in einer Klasse den Objekten "selbst" gibt. Es handelt sich um den ersten Parameter einer Klassenmethode. In C++/Java entspricht seine Rolle in etwa dem Keyword "this".


   Profil
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2628
  Beitrag No.2, vom Themenstarter, eingetragen 2021-09-21

\quoteon(2021-09-21 10:02 - DerEinfaeltige in Beitrag No. 1) self ist offensichtlich KEIN Befehl, sondern ein Variablenname. Üblicherweise der Variablenname, den man in einer Klasse den Objekten "selbst" gibt. Es handelt sich um den ersten Parameter einer Klassenmethode. \quoteoff Entschuldigung Einfältiger, ich hab das in Python noch nicht gehabt, dass er Variablennamen einfärbt. https://matheplanet.com/matheplanet/nuke/html/uploads/b/23651_Self-Bild1.png .. aber von der Befehlslogik des Programmes her muss es ein Variablenname sein: Liste.append(x) Self.pack() Kann jemand erklären, warum bei self.master.destroy nicht funktioniert, also, warum das Fenster nach drücken des Quitbuttons nicht verschwindet?


   Profil
dlchnr
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 20.04.2013
Mitteilungen: 199
Wohnort: Aalen, DE
  Beitrag No.3, eingetragen 2021-09-21

Hallo Bekell, ich beobachte schon längere Zeit, dass Du sehr viele Fragen zu Python stellst - insofern wundert mich doch etwas, dass Deine self-Frage erst jetzt auftaucht, wo doch das OP-Konzept als ein wichtiger Bestandteil dieser Programmiersprache angesehen werden muss. Mein Eindruck ist, dass Du beim Erlernen von Python einen etwas systematischeren Ansatz verfolgen und mal ein Python-Buch komplett durcharbeiten solltest. Hier gibt es u.a. frei Python-Bücher: http://programming-motherfucker.com/become.html#Python Ich hab' mich mit Python bislang auch nur nebenher beschäftigt, drum kann ich davon keines speziell empfehlen, hab' aber mit der Zeit den Eindruck gewonnen, dass "Thinking in Python" wohl zu den Standardwerken zählt.


   Profil
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 2628
  Beitrag No.4, vom Themenstarter, eingetragen 2021-09-21

\quoteon(2021-09-21 18:09 - dlchnr in Beitrag No. 3) Mein Eindruck ist, dass Du beim Erlernen von Python einen etwas systematischeren Ansatz verfolgen und mal ein Python-Buch komplett durcharbeiten solltest. \quoteoff wenn ich jünger wäre, hättest Du recht.... aber mein Hauptinteresse ist Mathe. Ich programmiere je bloss, um Dinge nachzusehen, wie sie sich verhalten..... Python deshalb, weil es bei weitem die schnellste und bequemste Programmiertechnik ist, die ich bisher kennengelernt habe, um mit Zahlen - auch grossen Zahlen, zu hantieren. Meine "Programme" waren daher meist alle Progrämmchen, kaum eines war 100 Zeilen lang. Nun kommt etwas vollkommen Neues für mich. Wenn man neue Sachen hat, merkt man, wie schwer es ist, das eigene Hirn an neue Gedanken zu gewöhnen. Habe ja relativ viel schon mit Geogebra und mit Excel zur Darstellung gebracht, aber ich merke jetzt, ich brauch was Animiertes. Das muss ich vollkommen selber entwickeln. Ein dynamisches Excel gibt es leider nicht. Bislang hab ich im wesentlichen prozessual und funktional programmiert und bin an "objektorientiert" vorbeigerutscht, bei Tkinter geht das nicht mehr! \quoteon http://programming-motherfucker.com/become.html#Python \quoteoff Ich hab ja Python3 zuhause, aber da ich an drei verschiedenen Orten auf der Welt lebe, habe ich es nicht immer zur Hand. Den Tkinter teil will ich erst mal anarbeiten ....


   Profil
Bekell hat die Antworten auf ihre/seine Frage gesehen.
Bekell wird per Mail über neue Antworten informiert.

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2021 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]