staticmethod()

Функция-декоратор staticmethod() превращает обычную функцию, объявленную внутри класса, в статический метод. У такого метода нет неявных аргументов self или cls, а вызывать его можно как через класс, так и через экземпляр.

Сигнатура

staticmethod(function)

Параметры:

  • function — функция, которую нужно сделать статической.

Возвращает: объект-дескриптор, представляющий статический метод.

Примеры

Использование как декоратора:

class MathTools:
    @staticmethod
    def square(x):
        return x * x

print(MathTools.square(7))
print(MathTools().square(4))
49
16

Группировка вспомогательных функций внутри класса:

class Validator:
    @staticmethod
    def is_email(value):
        return "@" in value and "." in value

    @staticmethod
    def is_phone(value):
        return value.startswith("+") and len(value) >= 10

print(Validator.is_email("user@alashed.kz"))
print(Validator.is_phone("+77001234567"))
True
True

Прямой вызов через staticmethod() без декоратора:

def to_celsius(f):
    return round((f - 32) * 5 / 9, 1)

class Temperature:
    to_celsius = staticmethod(to_celsius)

print(Temperature.to_celsius(100))
37.8

Сравнение с classmethod и обычным методом:

class Demo:
    def instance_method(self):
        return "instance"

    @classmethod
    def class_method(cls):
        return "class"

    @staticmethod
    def static_method():
        return "static"

d = Demo()
print(d.instance_method())
print(Demo.class_method())
print(Demo.static_method())
instance
class
static

См. также

Примечание

Описание основано на официальной документации Python (docs.python.org), распространяемой под лицензией PSF License v2. © Python Software Foundation.