Найти тему
programmer's notes (python and more)

ООП на Python. Иерархия переменных. Приложение к видео 4

Доброго времени суток, читатели, зрители моего канала programmer's notes.

Приложение к уроку

Иерархия переменных

Мы уже говорили о статических переменных. Разница между статической переменной и переменной (свойством) объекта заключается в том, что переменная объекты действует только внутри его. У каждого объекта свои свойства. А вот статическая переменная одинакова доступна всем объектам. В Python, однако, пошли гораздо дальше, статическая переменная там, в сущности глобальная переменная, доступ к которой осуществляется через имя класса (см. программу ниже).

В программе nmclass это та самая статическая переменная. Доступ к которой возможен и из объектов и просто в программе. Тогда как переменная объекта self.nm имеет свое значение для каждого объекта, если она в нём определена.

Текст программы см. ниже
Текст программы см. ниже
primer200.py

Результат выполнения программы

Петров
1A
2B
5A
5A

Конечно, может возникнуть вопрос, а зачем нам вообще статическая переменная, если она в сущности является обычной глобальной переменной. В данном случае, у меня нет исчерпывающего ответа. Разве что появляется возможность разбивать глобальные переменные, по так называемым пространствам имен. Ну чтож, это тоже дело.

Замечание 1.

Еще один важный нюанс. К статической переменной можно обращаться и через имя объекта класса, где определена статическая переменная (см. программу). Но, если мы напишем выражение типа p1.nmclass = 'qwerty', то эта запись будет означать не обращение к статической переменной, а создание локальной переменной, которая уже будет закрывать в объекте доступ к статической переменной.

Замечание 2
Более развёрнуто: все глобальные переменные можно разбить на модули, в которых они определены, а внутри модуля на классы. Вот такая выходит загогулина.

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

текст программы см. ниже
текст программы см. ниже
primer201.py

Результат выполнения программы

10
1
1

Если закомментировать строку global pr, то получим

10
1
10

Ну пока, всё!

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

Всего наилучшего. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

Качество вашего кода слишком высокое. Попробуйте хотя бы изменить имена переменных
Качество вашего кода слишком высокое. Попробуйте хотя бы изменить имена переменных