Fonction staticmethod() de Python
Fonctions intégrées de Python3
staticmethod()Il s'agit d'une fonction intégrée de Python utilisée pour convertir une méthode en méthode statique.
Une méthode statique appartient à la classe plutôt qu'aux instances ; elle n'a pas besoin d'accéder aux attributs d'instance ni d'appeler des méthodes d'instance.staticmethod()Elle peut être utilisée comme décorateur, et peut aussi être appelée directement.
Définition du mot: staticmethodOuistatic methodAbréviation de (méthode statique).
Syntaxe de base et paramètres
Format de syntaxe
staticmethod(function)
Description du paramètre
- Paramètre function:
- Type : objet fonction
- Description : La fonction à convertir en méthode statique.
Description de la fonction
- Valeur de retour: Renvoie un objet de méthode statique.
- Caractéristiques: Les méthodes statiques ne nécessitent pas
selfle paramètre self, et peuvent être appelées directement via le nom de la classe.
Exemple
Exemple 1 : Utilisation de base
Exemple
class MathUtils:
# Utiliser un décorateur pour définir une méthode statique (recommandé)
@staticmethod
def add(a, b):
return a + b
@staticmethod
def multiply(a, b):
return a * b
# Appeler directement via le nom de la classe (pas besoin de créer une instance)
result = MathUtils.add(3, 5)
print(result) # Sortie : 8
result = MathUtils.multiply(4, 6)
print(result) # Sortie : 24
# Utiliser un décorateur pour définir une méthode statique (recommandé)
@staticmethod
def add(a, b):
return a + b
@staticmethod
def multiply(a, b):
return a * b
# Appeler directement via le nom de la classe (pas besoin de créer une instance)
result = MathUtils.add(3, 5)
print(result) # Sortie : 8
result = MathUtils.multiply(4, 6)
print(result) # Sortie : 24
Sortie attendue :
8 24
Analyse du code :
- Les méthodes statiques utilisent
@staticmethodle décorateur pour définir. - Peut être appelée comme une fonction ordinaire, mais appartient à l'espace de noms de la classe.
- Elle peut être appelée sans créer d'instance de la classe.
Exemple 2 : Sans utiliser de décorateur
Exemple
class Temperature:
@staticmethod
def celsius_to_fahrenheit(c):
return c * 9/5 + 32
@staticmethod
def fahrenheit_to_celsius(f):
return (f - 32) * 5/9
# Appeler la méthode statique
print(Temperature.celsius_to_fahrenheit(0)) # Sortie : 32.0
print(Temperature.celsius_to_fahrenheit(100)) # Sortie : 212.0
print(Temperature.fahrenheit_to_celsius(32)) # Sortie : 0.0
# Il peut également être appelé via une instance
temp = Temperature()
print(temp.celsius_to_fahrenheit(25)) # Sortie : 77.0
@staticmethod
def celsius_to_fahrenheit(c):
return c * 9/5 + 32
@staticmethod
def fahrenheit_to_celsius(f):
return (f - 32) * 5/9
# Appeler la méthode statique
print(Temperature.celsius_to_fahrenheit(0)) # Sortie : 32.0
print(Temperature.celsius_to_fahrenheit(100)) # Sortie : 212.0
print(Temperature.fahrenheit_to_celsius(32)) # Sortie : 0.0
# Il peut également être appelé via une instance
temp = Temperature()
print(temp.celsius_to_fahrenheit(25)) # Sortie : 77.0
Sortie attendue :
32.0 212.0 0.0 77.0
Analyse du code :
- Les méthodes statiques sont souvent utilisées dans les classes utilitaires pour encapsuler des fonctions sans rapport avec les instances.
- Les méthodes statiques peuvent être appelées via le nom de la classe ou le nom d'une instance.
Exemple 3 : Application dans le patron de conception Factory
Exemple
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
@staticmethod
def from_dict(data):
# Créer un objet Person à partir d'un dictionnaire
return Person(data['name'], data['age'])
@staticmethod
def create_adult(name):
# Créer un adulte
return Person(name, 18)
# Utiliser une méthode statique pour créer l'objet
p1 = Person.from_dict({'name': 'Tom', 'age': 20})
print(p1.name, p1.age) # Sortie : Tom 20
p2 = Person.create_adult('Jack')
print(p2.name, p2.age) # Sortie : Jack 18
def __init__(self, name, age):
self.name = name
self.age = age
@staticmethod
def from_dict(data):
# Créer un objet Person à partir d'un dictionnaire
return Person(data['name'], data['age'])
@staticmethod
def create_adult(name):
# Créer un adulte
return Person(name, 18)
# Utiliser une méthode statique pour créer l'objet
p1 = Person.from_dict({'name': 'Tom', 'age': 20})
print(p1.name, p1.age) # Sortie : Tom 20
p2 = Person.create_adult('Jack')
print(p2.name, p2.age) # Sortie : Jack 18
Sortie attendue :
Tom 20 Jack 18
Les méthodes statiques sont souvent utilisées comme méthodes de fabrique pour créer des instances d'objets à partir de différentes sources de données.
Fonctions intégrées de Python3
Autres extensions