Les décorateurs sont des fonctions pythoniques qui améliorent d'autres fonctions. Nous allons créer deux décorateurs, @make_bold et @make_italic, pour formater le texte en gras et en italique. Voici comment :
</p> <h1>Décorateur pour mettre le texte en gras</h1> <p>def make_bold(func):</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">def wrapper(): return "<b>" + func() + "</b>" # Surround the result with bold tags return wrapper
déf make_italic(func):
def wrapper(): return "<i>" + func() + "</i>" # Surround the result with italic tags return wrapper
@make_bold
@make_italic
def say():
return "Hello"
print(say()) # Sortie : "Bonjour"
Vous pouvez également créer des décorateurs qui acceptent des arguments. Par exemple, créons un décorateur qui ajoute un horodatage au résultat :
<br>importer l'heure</p> <h1>Décorateur pour ajouter un horodatage à une fonction</h1> <p> déf add_timestamp(func):</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">def wrapper(*args, **kwargs): timestamp = time.ctime() # Get the current time return f"{timestamp}: {func(*args, **kwargs)}" # Prepend the timestamp to the call return wrapper
@add_timestamp
def greet(name):
return f"Hello, {name}!"
print(greet("John")) # Sortie : "2023-01 -01 12:00:00 : Bonjour, John!"
Les décorateurs travaillent non seulement pour les fonctions mais aussi pour les méthodes. Voici comment décorer une méthode :
<br>class User :</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">def __init__(self, name): self.name = name
def capitalize_name(method) :
def wrapper(self): return method(self).capitalize() # Capitalize the result return wrapper
@capitalize_name
def get_name(self):
return self.name
user = User("john")
print(user.get_name()) # Sortie : "John"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!