Wahrscheinlich einfaches Problem

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Beitragvon Trundle » Samstag 3. Januar 2009, 20:09

Hier mal ein wenig Beispielcode, wie man das mit Hilfe von Cairo und einem eigenen Widget machen kann. Der Code erhebt nicht den Anspruch, ein Tutorial oder gar perfekt zu sein, aber vllt ist er ja für jemanden hilfreich.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
Benutzeravatar
Dr.Miles
User
Beiträge: 38
Registriert: Montag 15. Dezember 2008, 08:33
Wohnort: Mannheim
Kontaktdaten:

Beitragvon Dr.Miles » Dienstag 6. Januar 2009, 01:07

Eine Variable, die nicht in der Instanz erstellt wurde, wird nach Ende einer Funktion wieder gelöscht.


Meinst du mit Funktion Methode?

Code: Alles auswählen

class Blah:
    def __init__(self):
        self.blah1 = "foo"
        blah2 = "bar"
        self.do_blah()


So wie ich es verstanden habe ist blah2 nur solange gültig, wie die Methode aktiv ist, stimmt das? und eine mit self.blah erstellte Variable ist in der ganzen Instanz gültig?

Edit: Ist eine Klasse dasselbe wie ein Datentyp?
Gruß
Dr.Miles
www.i2p2.de <--- sehr interressantes Anonymisierungsprojekt.
www.schaeuble-wegtreten.de <--- Petition gegen Schäuble
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 6. Januar 2009, 01:50

Dr.Miles hat geschrieben:Meinst du mit Funktion Methode?

Ja. Ich persönlich finde aber die Unterscheidung in Methode, Funktion und Prozedur recht sinnlos und unnötig. Insbesondere in Python ist Methode und Funktion so ziemlich das gleiche, weil wenn man eine Funktion als Attribut an eine Klasse binden kann wodurch es in Java-Sprech magisch zu einer Methode wird obwohl sich eigentlich nichts ändert. So kann man auch Methoden in Python wie Funktionen auf ihren Klassen aufrufen und einfach als Parameter ``self`` eine Instanz mitgeben. Will gar nicht wissen wie man sowas in das Methoden/Funktionen/Prozeduren-Weltbild einpassen würde.

Dr.Miles hat geschrieben:So wie ich es verstanden habe ist blah2 nur solange gültig, wie die Methode aktiv ist, stimmt das? und eine mit self.blah erstellte Variable ist in der ganzen Instanz gültig?

Es ist eine lokale Variable und daher nur in der Funktion gültig, ja. ``self.blah`` ist länger gültig, da es ein Attribut der Instanz ist und somit auch nach dem Ende der Funktion noch eine Referenz auf das Objekt was an ``self.blah`` besteht. Somit wird es nicht vom Garbage Collector weggeräumt, ``blah2`` aber schon.

Dr.Miles hat geschrieben:Edit: Ist eine Klasse dasselbe wie ein Datentyp?

Ja, eine Klasse ist ein Datentyp. Und eine Klasse hat auch eine Klasse (also einen Typ), die sogenannte Metaklasse. Und alles sind Objekte.
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder