Функция staticmethod() в Python

Python3 内置函数Встроенные функции Python3


staticmethod()Это встроенная функция в Python, используемая для преобразования метода в статический метод.

Статический метод принадлежит классу, а не экземплярам; ему не нужно обращаться к атрибутам экземпляра или вызывать методы экземпляра.staticmethod()Его можно использовать как декоратор, а также вызывать напрямую.

Определение слова: staticmethodДаstatic methodСокращение для (статический метод).


Базовый синтаксис и параметры

Формат синтаксиса

staticmethod(function)

Описание параметра

  • Параметр function:
    • Тип: объект функции
    • Описание: функция, которая должна быть преобразована в статический метод.

Описание функций

  • Возвращаемое значение: Возвращает объект статического метода.
  • Характеристики: Статические методы не требуютselfпараметр self, и их можно вызывать напрямую через имя класса.

Пример

Пример 1: Базовое использование

Пример

class MathUtils:
    # Использование декоратора для определения статического метода (рекомендуется)
    @staticmethod
    def add(a, b):
        return a + b

    @staticmethod
    def multiply(a, b):
        return a * b

# Вызов напрямую через имя класса (не нужно создавать экземпляр)
result = MathUtils.add(3, 5)
print(result)  # Вывод: 8

result = MathUtils.multiply(4, 6)
print(result)  # Вывод: 24

Ожидаемый вывод:

8
24

Анализ кода:

  1. Статические методы используют@staticmethodдекоратор для определения.
  2. Можно вызывать как обычную функцию, но принадлежит пространству имён класса.
  3. Его можно вызвать, не создавая экземпляр класса.

Пример 2: Без использования декоратора

Пример

class Temperature:
    @staticmethod
    def celsius_to_fahrenheit(c):
        return c * 9/5 + 32

    @staticmethod
    def fahrenheit_to_celsius(f):
        return (f - 32) * 5/9

# Вызов статического метода
print(Temperature.celsius_to_fahrenheit(0))    # Вывод: 32.0
print(Temperature.celsius_to_fahrenheit(100)) # Вывод: 212.0
print(Temperature.fahrenheit_to_celsius(32)) # Вывод: 0.0

# Его также можно вызвать через экземпляр
temp = Temperature()
print(temp.celsius_to_fahrenheit(25))  # Вывод: 77.0

Ожидаемый вывод:

32.0
212.0
0.0
77.0

Анализ кода:

  • Статические методы часто используются в служебных классах для инкапсуляции функций, не связанных с экземплярами.
  • Статические методы можно вызывать через имя класса или имя экземпляра.

Пример 3: Применение в паттерне «Фабрика»

Пример

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    @staticmethod
    def from_dict(data):
        # Создать объект Person из словаря
        return Person(data['name'], data['age'])

    @staticmethod
    def create_adult(name):
        # Создать взрослого
        return Person(name, 18)

# Использовать статический метод для создания объекта
p1 = Person.from_dict({'name': 'Tom', 'age': 20})
print(p1.name, p1.age)  # Вывод: Tom 20

p2 = Person.create_adult('Jack')
print(p2.name, p2.age)  # Вывод: Jack 18

Ожидаемый вывод:

Tom 20
Jack 18

Статические методы часто используются как фабричные методы для создания экземпляров объектов из разных источников данных.


Python3 内置函数Встроенные функции Python3


Другие расширения