Python Glossary English

все Python 3ООПпонятие

@staticmethod

методы

Статический метод. Не принимает self или cls. Просто функция внутри класса — логическая группировка.

Синтаксис

@staticmethod
def method(...): ...

В отличие от classmethod статический метод не получает ни экземпляр, ни класс, поэтому до состояния объекта или класса он не дотянется. Держать его в классе, а не выносить обычной функцией, стоит лишь ради логической принадлежности к пространству имён класса; нужен доступ к классу (например, для фабрики) — берите classmethod.

Примеры

class MathUtils:
    @staticmethod
    def add(a, b):
        return a + b
    @staticmethod
    def multiply(a, b):
        return a * b
print(MathUtils.add(3, 4))       # → 7
print(MathUtils.multiply(3, 4))  # → 12
class Validator:
    @staticmethod
    def is_email(s):
        return '@' in s and '.' in s.split('@')[-1]
print(Validator.is_email('user@example.com'))  # → True
print(Validator.is_email('not-an-email'))       # → False
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
# Вызов через экземпляр
v = Validator()
print(v.is_email('a@b.com'))  # → True
class StringUtils:
    @staticmethod
    def is_palindrome(s):
        s = s.lower().replace(' ', '')
        return s == s[::-1]
print(StringUtils.is_palindrome('racecar'))  # → True
print(StringUtils.is_palindrome('hello'))    # → False

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности