Menu
Coddy logo textTech

Декоратор staticmethod

Часть раздела Object Oriented Programming путешествия по Python на Coddy — урок 11 из 64.

Декоратор @staticmethod создает методы, которым не требуется self или класс. Они работают как обычные функции, но принадлежат классу.

Вот пример класса со статическими методами:

class MathHelper:
    @staticmethod
    def add(a, b):
        return a + b
    
    @staticmethod
    def is_even(number):
        return number % 2 == 0

Вызывайте статические методы, используя имя класса:

result = MathHelper.add(5, 3)
print(result)

check = MathHelper.is_even(10)
print(check)

Вы также можете вызывать их из объекта:

helper = MathHelper()
result2 = helper.add(2, 4)
print(result2)

Вывод:

8
True
6

Статические методы не имеют доступа к данным экземпляра или класса:

class Calculator:
    brand = "Python Calc"
    
    def __init__(self, owner):
        self.owner = owner
    
    @staticmethod
    def multiply(x, y):
        # Не может получить доступ к self.owner или Calculator.brand
        return x * y

Ключевой момент: Используйте @staticmethod, когда вам нужна функция, которая связана с классом, но не требует доступа к экземпляру (self) или данным класса. Параметр self не требуется.

Шпаргалка

Декоратор @staticmethod создает методы, которым не требуется self или класс. Они работают как обычные функции, но принадлежат классу.

class MathHelper:
    @staticmethod
    def add(a, b):
        return a + b
    
    @staticmethod
    def is_even(number):
        return number % 2 == 0

Вызывайте статические методы, используя имя класса:

result = MathHelper.add(5, 3)
check = MathHelper.is_even(10)

Вы также можете вызывать их из объекта:

helper = MathHelper()
result2 = helper.add(2, 4)

Статические методы не имеют доступа к данным экземпляра или класса — параметр self не требуется.

Попробуйте сами

В этом уроке нет задания по программированию.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Object Oriented Programming