Python Frage: Woher kommt nicht nachvollziehbare Syntax: self["name"] = <class call>

  • Zu der Syntax:


    self["name"] = <class call>


    habe ich bisher im Internet nichts gefunden.

    Diese Zuweisung ruft wohl implizit die Funktion "execBegin()" auf die innerhalb der Klasse definiert sein muss.

    Dazu gibt es meist auch noch "execEnd()" innerhalb der Klasse.


    Ist das was Dream spezifisches?

    Falls ja was passiert bei so einer Zuweisung?

    Wann wird "execEnd" aufgerufen?


    Mysteriös?


    /Willi/

  • Hallo alpha,


    Hilf einem blutigen Python Anfänger doch mal auf die Sprünge:

    Wie würde man den einfachen folgenden Code zum laufen bringen (getestet mit Python 2.7)


    Da fehlt mir eindeutig know how!


    /Willi/

  • Ist grad schwierig zu verstehen, was du mit deinem Beispiel überhaupt bezwecken willst. Du nimmst dir besser ein Plugin von github.com/opendreambox und schaust dir an, was dort gemacht wird. Ich würde nicht grad mit einem komplexen wie EPGRefresh anfangen sondern vielleicht mit dem: https://github.com/opendreambo…manentclock/src/plugin.py


    Deine Frage von self["name"] = <class call> kommt wohl eher von sowas:

    self["myLabel"] = Label()


    Wobei myLabel dem Namen des widgets im skin entspricht. Und mit Label() sagst du, dass es sich um ein widget vom Typ Label handelt.


    Label ist so definiert:

    class Label(VariableText, HTMLComponent, GUIComponent):

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Genau, im Screen wird ein dict mitgegeben, weshalb es da mit self["eins"] geht ;)


    Wenn man das in die Class b() auch reinnimmt, dann klappt es auch mit dem angeführten Beispiel:

    Python
    class b(dict):
        def __init__(self):
            dict.__init__(self)
            print ("Hello world 2")
            self["eins"] = a()
            self["eins"].test()

    Ansonsten ginge es auch mit self.eins, wie alpha schon meinte.

    Python
    class b():
        def __init__(self):
            print ("Hello world 2")
            self.eins = a()
            self.eins.test()

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Hallo Sven,


    Du kennst Dich einfach aus! Verwirrend für mich als Anfänger ist, das

    Dictionaries auch ohne eigenen Variablen Namen benutzt werden können.

    Also erwarten würde ich: self.var["hier"] = . Das dies auch ohne das "var" geht -

    unerwartbar.


    Im Internet habe ich kein Beispiel gefunden, dass ohne "var" auskommt.


    Wo steht so was?


    Wie immer - vielen Dank!


    /Willi/

  • Du kennst Dich einfach aus!

    Naja, inzwischen hab ich mich so reingewurschtelt ;)

    Dass ich mich auskenne, würde ich so noch nicht unterschreiben wollen 8)

    Quote

    Wo steht so was?

    Na im Code der Screen.py zum Beispiel ;)

    In den Dateien im DreamOS findet man eigentlich fast immer eine Lösung 8o

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

    Edited once, last by Sven H ().