Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация

Статический метод Python

14395
4 минуты чтения
Средний рейтинг статьи: 4.3

Статический метод в Python — это метод, который связан с классом, а не с его экземплярами. Чтобы быть вызванным, он не требует создания экземпляра класса и не имеет доступа к экземпляру. Статические методы в Python объявляются с использованием декоратора @staticmethod. Этот декоратор указывает интерпретатору Python, что метод является статическим, и следует вызывать его через класс, а не через экземпляр класса.

Таким образом, статические методы в Python могут использоваться для выполнения операций, не требующих доступа к экземпляру класса или его атрибутам, то есть, по сути, они являются вспомогательными функциями. Чтобы было понятнее, о чём речь, перейдем сразу к практике.

Пример №1

Представим, что у нас есть класс MathUtils, который содержит статический метод для вычисления факториала:

    

Давайте введем далее:

    

Получили факториал 5, то есть 120. Здесь статический метод factorial не использует никакие атрибуты экземпляра класса, а только входной аргумент n. И мы вызвали его, используя синтаксис MathUtils.factorial(n) и не создавая экземпляр класса MathUtils.

Далее отметим, что статические методы в Python могут использоваться не только в классах, но также в модулях и пакетах. Если вы определяете функцию в модуле и не хотите, чтобы она была связана с экземпляром класса или модулем, вы можете использовать декоратор @staticmethod для объявления этой функции как статической.

Облачные серверы

Масштабируемые вычислительные ресурсы
по всему миру с почасовой оплатой.

Пример №2

Допустим, у нас есть модуль StringUtils, содержащий статический метод для проверки, является ли строка палиндромом. Пишем такой код:

    

Здесь функция is_palindrome не связана с каким-либо экземпляром класса или объектом модуля, поэтому мы можем использовать декоратор @staticmethod для объявления ее как статической. Для этого расширим наш код таким образом:

    

Далее введем для проверки:

    

Всё верно, первое слово является палиндромом, поэтому интерпретатор вывел True, а второе нет, и мы получили False.

Таким образом, мы можем вызвать метод is_palindrome через класс StringUtils, используя синтаксис StringUtils.is_palindrome(string) вместо того, чтобы импортировать функцию is_palindrome и вызывать ее напрямую.

Еще одно важное отличие статических методов от методов экземпляров класса в Python заключается в том, что статические методы не могут изменять состояние экземпляра. Это означает, что они не могут изменять значения атрибутов, что логично, так как они не имеют доступа к экземпляру. Если вы хотите изменить состояние экземпляра класса, вам нужно использовать методы экземпляров.

Пример №3

Рассмотрим еще один пример. Допустим, у нас есть класс Person, имеющий атрибут age и статический метод is_adult, проверяющий значение на соответствие возрасту совершеннолетия:

    

Далее давайте создадим переменную age со значением 21, вызовем статический метод is_adult из класса Person с этим значением и сохраним его результат в переменную is_adult, вот так:

    

Теперь для проверки давайте введем:

    

Поскольку возраст соответствует заданному в статическом методе условию, мы получили True. В примере выше статический метод is_adult принимает аргумент age, но не имеет доступа к атрибуту age экземпляра класса Person, выступая в качестве вспомогательной функции.

Подготовили для вас выгодные тарифы на облачные серверы

Cloud MSK 15

477 ₽/мес

Процессор
1 x 3.3 ГГц
Память
1 ГБ
NVMe
15 ГБ
Канал
1 Гбит/с
Публичный IP
Cloud MSK 30

657 ₽/мес

Процессор
1 x 3.3 ГГц
Память
2 ГБ
NVMe
30 ГБ
Канал
1 Гбит/с
Публичный IP

Подведем итоги

В завершение отметим, что статические методы улучшают читабельность кода и дают возможность повторно использовать его. А еще они удобнее, если сравнивать их со стандартными функциями Python. Удобство статических методов в том, что они не требуют отдельного импорта, как это нужно делать для функций. Таким образом, использование статических методов класса Python может существенно упростить код и работу с ним. И, как вы наверняка убедились на примерах выше, освоить их довольно просто.

14395
4 минуты чтения
Средний рейтинг статьи: 4.3

Читайте также

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server