Ich hatte eine Idee über ein Framework für die Datenflussauswertung mit verzögerter Ausführung. Ich denke, ich brauche Metaklassen dafür, aber ich weiß noch nicht viel über sie. Vielleicht haben Sie schon eine Idee, ob das Folgende funktioniert.Metaklassen für Lazy-Datenfluss-System in Python
Ich würde gerne normale Programme schreiben und lediglich durch Ableiten von Objekten aus einer Metaklasse möchte ich eine faule Auswertung einführen. Deshalb
a=A()
b=B()
c=C(a,b)
d=D(a)
if input()=="c":
print(c.result)
else:
print(d.result)
All würde Ich mag, dies zu tun zu machen faul ausgewertet (dh für die Eingabe = „c“ nur A, B, C wird ausgeführt und für die Eingabe = „d“ nur A, werden D sein ausgeführt) soll A, B, C, D aus meiner Metaklasse ableiten.
Ich habe über die Änderung __new__
nachgedacht, so dass es ein Proxy-Objekt zurückgibt, das tatsächlich __init__
nicht ausführt. Nur bei Attributzugriff wird __init__
ausgeführt und alle Attributzugriffe werden weitergeleitet.
Darüber hinaus sollte dieses Proxy-Objekt eine Klassenmethode haben, die im Voraus überprüfen kann, bevor das reale Objekt tatsächlich __init__
-ing, ob die Init-Parameter gültig sind (Datenquellen). Tatsächlich möchte ich den Dataflow-Abhängigkeitsgraphen drucken, ohne die Objekte bereits zu laden.
Schließlich, als das letzte kleine Extra, möchte ich Abhängigkeitsverfolgung in meinen Daten einführen. Alle Objektmethoden sollten ihre Argumente magisch untersuchen und das Rückgabeergebnis der Methode (wenn es sich um eine "normale Klasse" handelt, in der ich Attribute setzen kann) durch einen Verweis auf alle Eingabeargumente bereichern. Auf diese Weise kann ich immer nachvollziehen, was in einigen endgültigen Daten eine Rolle gespielt hat.
Denkst du, dass das möglich ist oder hast du vielleicht bereits Hinweise, wie das funktionieren könnte? Vor allem der letzte Teil, über den ich mir nicht sicher bin.
(a) Dies ist möglich (b) Diese Frage vage und offen. Niemand wird dein System für dich entwerfen. Lesen Sie etwas von der Literatur und kommen Sie mit einer Frage zurück, die zumindest ein wenig Betonung hat. – Marcin
überprüfen Greenspuns Zehnte Regel der Programmierung: http://c2.com/cgi/wiki?GreenspunsTenthRuleOfProgramming –
@Gerenuk Oder eigentlich könnte es nur deine Schuld sein, und Sie sind zu faul, eine richtige Frage zu schreiben, weshalb die nur die Antwort sagt dir auch, dass diese Frage nicht konkret genug ist. – Marcin