Auch wenn ich ständig versuche, das zu verbergen: Von vielem, das zu schreibst, habe ich keine bzw. bestenfalls eine halbe Ahnung...
Ich möchte aber keinesfalls so unwissend bleiben! Darum werd' ich jetzt mal nachhaken:
Hyperion hat geschrieben:BlackJack hat es Dir doch sogar schon mit den passenden "Mappings" der Komponenten geschildert.
Meinst Du damit BlackJacks Aussage:
BlackJack hat geschrieben:... `recurrence` ist ein Objekt und die Klassen sind Attribute davon...
?
Hyperion hat geschrieben:Klassen sind eben auch Attribute im Kontext eines Moduls.
Das ist mir jetzt klar, nur: Woher komme ich an die Info, welche Klassen sich im Modul befinden? Um 'getattr()' zu verwenden muss ich ja bereits den Namen des Attributes wissen.
Hyperion hat geschrieben:Code: Alles auswählen
In [14]: import collections
In [16]: getattr(collections, "deque")
Out[16]: <type 'collections.deque'>
deque ist eben eine Klasse und keine Funktion
Woran siehst Du das?
Hyperion hat geschrieben:Nunja, BlackJacks Ansatz ist sicherlich der elegantere, wenn man die Namen 1:1 aus Python übernimmt.
Meinst Du mit
1:1 aus Python das, was ich noch nicht verstanden habe? Mit 'getattr()' irgendwie an die Recurrence-Klassen aus dem recurrence-Modul zu gelangen? Drehen wir uns im Kreis?
Hyperion hat geschrieben:Mir ist halt noch nicht klar, was Du da exakt "lösen" willst.
Vielleicht ist mein Problem tatsächlich viel einfacher zu lösen, als ich es wahrhaben möchte. Wer möchte am Ende auch sagen müssen, dass sein Programm einfach zu lösen war...
Im Sinne von "Wer schreibt, schaut sich beim Denken zu" versuche ich nochmal, mein Problem zu formulieren:
Ich habe ein Modul recurrence, das verschiedene Klassen zur Wiederholung von Terminen bereithält. Ich möchte die Möglichkeit, weitere Wiederholungstypen zu definieren, ähnlich wie man das von Plugins kennt.
Jeder Termin wird durch eine Instanz der Klasse Entry() dargestellt und erhält ein Attribut 'recurrence', das je nach Wiederholungstyp auf eine Klasse aus dem recurrence-Modul verweist.
Wie lässt sich nun ermitteln, welche Wiederholungen verfügbar sind? Meine erste (und bisher einzige) Idee war eben, die vorhandenen Klassen 'händisch' in die Konfiguration einzutragen. Mein Gefühl sagt mir aber, dass sich das auch schöner lösen lässt.
Vielleicht mit 'getattr()'? Aber wie lässt sich dieser Ansatz von BlackJack als Lösung meines Problems verwenden? Genau da hänge ich nach wie vor...
mutetella