Статические переменные класса в Python

  1. Используйте staticmethod() для определения статических переменных в Python
  2. Используйте @staticmethod для определения статических переменных в Python

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

В этом руководстве будут продемонстрированы различные способы определения статических переменных в Python.

Используйте staticmethod() для определения статических переменных в Python

staticmethod() в Python - это встроенная функция, используемая для возврата статической переменной для данной функции.

Этот метод сейчас считается старым способом определения статической переменной в Python.

Пример:

class StaticVar:

    def random(text):
        
        print(text)
        print("This class will print random text.")

StaticVar.random = staticmethod(StaticVar.random)

StaticVar.random("This is a random class.")

Выход:

This is a random class.
This class will print random text.

Здесь мы сначала создаем класс под названием StaticVar. В программе мы объявляем переменную с именем random как статическую переменную вне класса с помощью функции staticmethod(). Таким образом, мы можем вызывать random() напрямую, используя класс StaticVar.

Используйте @staticmethod для определения статических переменных в Python

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

Пример:

class StaticVar:
    
    @staticmethod
    def random(text):
        # show custom message
        print(text)
        print("This class will print random text.")

StaticVar.random("This is a random class.")

Выход:

This is a random class.
This class will print random text.

Обратите внимание, что декоратор @staticmethod определяется до определения статической переменной random. Благодаря этому мы можем легко вызвать random переменную в конце через класс StaticVar.

Также обратите внимание, что в обоих методах мы не используем аргумент self, который используется для доступа к атрибутам и методам функции при определении random переменной. Это потому, что статические переменные никогда не работают через объекты.

Сопутствующая статья - Python Class

  • Статический метод Python
  • Метаклассы в Python
  • Частные методы в Python