Ich möchte method chaining implementieren, aber nicht für die üblichen Funktionen - für asyncio Koroutinen.Methode Verketten mit asyncio Korotinen
import asyncio
class Browser:
@asyncio.coroutine
def go(self):
# some actions
return self
@asyncio.coroutine
def click(self):
# some actions
return self
"intuitive" way Kette nennen würde nicht funktionieren, da einzelne Methode gibt Koroutine (Generator) nicht selbst:
@asyncio.coroutine
def main():
br = yield from Browser().go().click() # this will fail
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Correct Weise Kette zu nennen ist:
br = yield from (yield from Browser().go()).click()
Aber es sieht hässlich aus und wird unlesbar, wenn die Kette wächst.
Gibt es eine Möglichkeit, dies besser zu tun? Irgendwelche Ideen sind willkommen.
Ich bin nicht sicher, ob ich verstehe, was Sie versuchen, zu tun, aber wenn Sie nur Methoden für das Objekt iterieren wollen, können Sie das tun, indem Sie sie in ein dict oder mit 'getattr 'setzen. – user3467349
Entschuldigung, Sie sollten den "hässlichen" Weg verwenden. –