Статический метод Python — это встроенная функция, которая возвращает статический метод для данной функции. Этот метод похож на метод уровня класса Python, но разница в том, что этот метод привязан только к классу, а не к объектам класса. Это означает, что мы не можем изменить какой-либо объект класса с помощью функции staticmethod (), поскольку объекты к ней не привязаны.
Статический метод Python
Статические методы в Python невероятно похожи на методы уровня класса Python, разница в том, что статический метод привязан к классу, а не к объектам этого класса.
Это означает, что статический метод может быть вызван без объекта для этого класса. Это также означает, что статические методы не могут изменять состояние объекта, поскольку они не привязаны к нему. Давайте посмотрим, как мы можем создавать статические методы в Python.
staticmethod ( function)
Аргумент функции — это функция, которая присутствует внутри класса и которую необходимо преобразовать.
Однако вышеупомянутый метод не является питоническим способом создания статического метода ; новый способ:
@staticmethoddef func (args, ...)
Здесь мы использовали @staticmethod.
Статический метод возвращает статический метод данной функции.
Создание статических методов Python
Статические методы Python можно создать двумя способами.
Давайте посмотрим на первый метод.
Использование staticmethod ()
Давайте посмотрим, как использовать подход staticmethod ().
# app.pyclass Mul: def calculate (x, y): return x * y # create addNumbers static methodMul.calculate = staticmethod (Mul.calculate) print ('Product:', Mul.calculate (11, 21))
Вывод
➜ pyt python3 app.pyProduct: 231➜ pyt
Следует отметить, что мы вызвали созданный нами метод mul без объекта.
Здесь не было никаких сюрпризов. Этот подход контролируется в каждом месте, и также можно создать статический метод вне метода класса. Давайте рассмотрим другой подход с тем же примером здесь.
См. Другой пример.
# app.py # Определение класса Sumclass Sum: # определение функции sumoftwo # эта функция будет вызываться в статическом методе def sumoftwo (a, b): return a + b # Создание статического метода MethodSum.sumoftwo = staticmethod (Sum.sumoftwo) # Печать значений путем передачи аргументовprint ("Сумма двух чисел:", Sum .sumoftwo (10, 20))
Вывод
➜ pyt python3 app.py Сумма двух чисел: 30➜ pyt
В этом примере мы сначала создали класс с именем Sum, затем мы создали функцию внутри класса с именем sumoftwo.
Вне класса, мы создали статический метод, вызвав эту функцию, а затем распечатали это.
Использование @staticmethod
Это более тонкий способ создания статического метода, поскольку нам не нужно полагаться на операторное определение метода, который является методом класса и делает его статическим в каждом месте, где вы делаете его статическим.
См. следующий пример.
# app.py # Определение класс Sumclass Sum: # определение функции sumoftwo # эта функция будет вызываться в статическом методе # Создание здесь только статического метода @staticmethod def sumoftwo (a, b): return a + b # Вывод значений путем передачи agrumentsprint ("Sum of два числа: ", Sum.sumoftwo (10, 20))
Output
➜ pyt python3 app.pySum of два числа: 30➜ pyt
В этом примере, как и в примере 1, мы создали класс, но когда мы создаем функцию внутри класса, мы объявляем ее как статический метод, а затем вне класса мы передаем значения и печатаем желаемый результат.
Преимущества статического метода Python
Статические методы имеют очевидный вариант использования. Когда нам нужна какая-то функциональность, касающаяся не объекта, а всего класса, мы делаем метод статическим.
Это очень удобно, когда нам нужно создать служебные методы, поскольку они обычно не привязаны к жизненному циклу объекта.
Наконец, обратите внимание, что в статическом методе , нам не нужно передавать self в качестве первого аргумента.
Наконец, пример статического метода Python завершен.
Похожие сообщения
Функция Python super ()
Функция Python classmethod ()