Python staticmethod()-Funktion
Python3 integrierte Funktionen
staticmethod()Es ist eine in Python eingebaute Funktion, mit der eine Methode in eine statische Methode umgewandelt wird.
Eine statische Methode gehört zur Klasse und nicht zu Instanzen; sie muss weder auf Instanzattribute zugreifen noch Instanzmethoden aufrufen.staticmethod()Sie kann als Dekorator verwendet und auch direkt aufgerufen werden.
Wortdefinition: staticmethodJastatic methodAbkürzung für (statische Methode).
Grundlegende Syntax und Parameter
Syntaxformat
staticmethod(function)
Parameterbeschreibung
- Parameter function:
- Typ: Funktionsobjekt
- Beschreibung: Die Funktion, die in eine statische Methode umgewandelt werden soll.
Funktionsbeschreibung
- Rückgabewert: Gibt ein statisches Methodenobjekt zurück.
- Eigenschaften: Statische Methoden benötigen
selfden Parameter self nicht und können direkt über den Klassennamen aufgerufen werden.
Beispiel
Beispiel 1: Grundlegende Verwendung
Beispiel
class MathUtils:
# Dekorator verwenden, um eine statische Methode zu definieren (empfohlen)
@staticmethod
def add(a, b):
return a + b
@staticmethod
def multiply(a, b):
return a * b
# Direkt über den Klassennamen aufrufen (keine Instanz muss erstellt werden)
result = MathUtils.add(3, 5)
print(result) # Ausgabe: 8
result = MathUtils.multiply(4, 6)
print(result) # Ausgabe: 24
# Dekorator verwenden, um eine statische Methode zu definieren (empfohlen)
@staticmethod
def add(a, b):
return a + b
@staticmethod
def multiply(a, b):
return a * b
# Direkt über den Klassennamen aufrufen (keine Instanz muss erstellt werden)
result = MathUtils.add(3, 5)
print(result) # Ausgabe: 8
result = MathUtils.multiply(4, 6)
print(result) # Ausgabe: 24
Erwartete Ausgabe:
8 24
Codeanalyse:
- Statische Methoden verwenden
@staticmethodden Dekorator zum Definieren. - Kann wie eine gewöhnliche Funktion aufgerufen werden, gehört aber zum Namensraum der Klasse.
- Sie kann aufgerufen werden, ohne eine Instanz der Klasse zu erstellen.
Beispiel 2: Ohne Verwendung eines Dekorators
Beispiel
class Temperature:
@staticmethod
def celsius_to_fahrenheit(c):
return c * 9/5 + 32
@staticmethod
def fahrenheit_to_celsius(f):
return (f - 32) * 5/9
# Statische Methode aufrufen
print(Temperature.celsius_to_fahrenheit(0)) # Ausgabe: 32.0
print(Temperature.celsius_to_fahrenheit(100)) # Ausgabe: 212.0
print(Temperature.fahrenheit_to_celsius(32)) # Ausgabe: 0.0
# Sie kann auch über eine Instanz aufgerufen werden
temp = Temperature()
print(temp.celsius_to_fahrenheit(25)) # Ausgabe: 77.0
@staticmethod
def celsius_to_fahrenheit(c):
return c * 9/5 + 32
@staticmethod
def fahrenheit_to_celsius(f):
return (f - 32) * 5/9
# Statische Methode aufrufen
print(Temperature.celsius_to_fahrenheit(0)) # Ausgabe: 32.0
print(Temperature.celsius_to_fahrenheit(100)) # Ausgabe: 212.0
print(Temperature.fahrenheit_to_celsius(32)) # Ausgabe: 0.0
# Sie kann auch über eine Instanz aufgerufen werden
temp = Temperature()
print(temp.celsius_to_fahrenheit(25)) # Ausgabe: 77.0
Erwartete Ausgabe:
32.0 212.0 0.0 77.0
Codeanalyse:
- Statische Methoden werden oft in Hilfsklassen verwendet, um Funktionen zu kapseln, die nicht mit Instanzen zusammenhängen.
- Statische Methoden können über den Klassennamen oder einen Instanznamen aufgerufen werden.
Beispiel 3: Anwendung im Factory-Muster
Beispiel
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
@staticmethod
def from_dict(data):
# Ein Person-Objekt aus einem Dictionary erstellen
return Person(data['name'], data['age'])
@staticmethod
def create_adult(name):
# Erstelle einen Erwachsenen
return Person(name, 18)
# Verwende eine statische Methode, um das Objekt zu erstellen
p1 = Person.from_dict({'name': 'Tom', 'age': 20})
print(p1.name, p1.age) # Ausgabe: Tom 20
p2 = Person.create_adult('Jack')
print(p2.name, p2.age) # Ausgabe: Jack 18
def __init__(self, name, age):
self.name = name
self.age = age
@staticmethod
def from_dict(data):
# Ein Person-Objekt aus einem Dictionary erstellen
return Person(data['name'], data['age'])
@staticmethod
def create_adult(name):
# Erstelle einen Erwachsenen
return Person(name, 18)
# Verwende eine statische Methode, um das Objekt zu erstellen
p1 = Person.from_dict({'name': 'Tom', 'age': 20})
print(p1.name, p1.age) # Ausgabe: Tom 20
p2 = Person.create_adult('Jack')
print(p2.name, p2.age) # Ausgabe: Jack 18
Erwartete Ausgabe:
Tom 20 Jack 18
Statische Methoden werden oft als Fabrikmethoden verwendet, um Objektinstanzen aus verschiedenen Datenquellen zu erstellen.
Python3 integrierte Funktionen
Andere Erweiterungen