Lors de la décoration d'une fonction, vous pouvez utiliser une méthode @object.method
, et vous pouvez utiliser des méthodes d'attributs d'attributs et ainsi de suite @object.attribute.attribute.method
. Vous pouvez également passer des arguments supplémentaires au décorateur @function(foo="bar")
.Fonction appelle dans la décoration de fonction
Cependant, il semble que ces conflits. Quand il y a un appel de fonction dans la chaîne, python semble supposer que c'est le bit où vous passez des arguments au décorateur, et toutes les chaînes après cela sont des SyntaxError.
Y at-il quelque chose qui me manque ici? Une raison de ce comportement ou un moyen de contourner le problème?
Ce code a été écrit pour Python 3.4.
#!/usr/bin/env python3
class Decorator:
def decorate(self, callback):
return callback
_dec = Decorator()
def findit():
return _dec
class B: dec = _dec
class A: bar = B()
foo = A()
dec = findit()
@dec.decorate
#@findit().decorate
#Above line is a syntax error
@foo.bar.dec.decorate #also permitted
def function():
pass
Erreur:
File "test.py", line 17
@findit().decorate
^
SyntaxError: invalid syntax
Essayez '@ (findit() décorer.)'. Pourrait être un problème de priorité? –
'@ (findit(). Decorate)' donne une erreur de syntaxe sur le crochet d'ouverture. – AI0867