Bonjour,
Dans le cadre de mon framework python, j'aimerais pouvoir faire la chose suivante :
mais visiblement, ce n'est pas possible :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 @trigger.group(ga="1/1/1").changed() def rule(event): pass
Est-ce que c'est parce que je n'utilise pas la syntaxe kivabien, ou est-ce vraiment impossible de faire ce genre de chose ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $ python decorators.py File "decorators.py", line 117 @trigger.group(ga="1/1/1").changed() ^ SyntaxError: invalid syntax
Dans ce dernier cas, que me proposeriez-vous ? Je peux bien sûr faire :
mais c'est moins sioux, car changed() prendra d'autres argument, et ga n'est pas vraiment en relation direct avec cette partie du décorateur... J'aurais aimé bien séparer les choses, tout en conservant une syntaxe sympa.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 @trigger.group.changed(ga="1/1/1") def rule(event): pass
Merci d'avance pour vos suggestions.
PS : pour info, voici comment je comptais procéder pour l'implémentation des décorateurs :
Le truc était de transformer Group an callable, se retournant lui-même, afin de pouvoir accéder à ses méthodes décoratrices...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 class Group(): def __call__(self, ga=None, id=None): # TODO: save ga and id, to be able to use them in the decorating methods return self def changed(self, from_=None, to=None): def decorated(func): # TODO: register func in the triggering system return func return decorated class Trigger(): def __init__(self): self.group = Group() trigger = Trigger()
Chuis déçu que ça ne puisse pas fonctionnerBouuh !
Partager