Grundsätzlich habe ich eine API, die eine Klasse Foo() mit einer Methode Foo.bar (arg1, name) bereitstellt.Partielle Anwendung von Funktionen innerhalb eines Kontextmanagers ("mit ..")
Gibt es eine Möglichkeit, ein functools.partial Objekt Foo.bar in einem Kontext-Manager, also wie folgt anzuwenden:
x=Foo()
with my_argument(name="Something") as e:
x.bar(arg1=5) # == x.bar(arg1=5, name="Something") in this context
Ich fragte mich, ob es eine elegantere Art und Weise für dieses andere ist als Affe Patchen Foo.bar?
Edit: Der Punkt ist, habe ich Code wie folgt:
model.addConstr(a, name="constraint_1")
model.addConstr(b, name="constraint_2")
Und ohne zusätzliche Textvorschlag der folgende Code sollte die gleichen Anrufe nachgeben 'Modell':
with Arguments(name="constraint"):
model.addConstr(a)
model.addConstr(b)
Sie meinen teilweise Anwendung. Teilbewertung ist eine (meist statische, teilweise weil sie ziemlich teuer ist) [Programmtransformation] (http://morepypy.blogspot.com/2012/01/comparting-partial-evaluation-and.html). Und wenn das möglich wäre, würdest du es wirklich nicht tun wollen, außer * vielleicht * beschränkt auf Methoden des Objekts, das den Kontextmanager lieferte. – delnan
Nicht so, aber ja. –