You are currently viewing Класс или статические переменные в Python

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

Все объекты имеют общий класс или статические переменные. Экземпляр или нестатические переменные различны для разных объектов (у каждого объекта есть копия). Например, пусть студент-информатик будет представлен классом CSStudent. Класс может иметь статическую переменную, значение которой равно “cse” для всех объектов. И класс также может иметь нестатические члены, такие как name и roll. Переменные, у которых нет предыдущего статического ключевого слова, являются переменными экземпляра. 

Python подход прост; он не требует статического ключевого слова.

# Python program to show that the variables with a value
# assigned in class declaration, are class variables

# Class for Computer Science Student
class CSStudent:
	stream = 'cse'				 # Class Variable
	def __init__(self,name,roll):
		self.name = name		 # Instance Variable
		self.roll = roll		 # Instance Variable

# Objects of CSStudent class
a = CSStudent('Geek', 1)
b = CSStudent('Nerd', 2)

print(a.stream) # prints "cse"
print(b.stream) # prints "cse"
print(a.name) # prints "Geek"
print(b.name) # prints "Nerd"
print(a.roll) # prints "1"
print(b.roll) # prints "2"

# Class variables can be accessed using class
# name also
print(CSStudent.stream) # prints "cse"

# Now if we change the stream for just a it won't be changed for b
a.stream = 'ece'
print(a.stream) # prints 'ece'
print(b.stream) # prints 'cse'

# To change the stream for all instances of the class we can change it
# directly from the class
CSStudent.stream = 'mech'

print(a.stream) # prints 'ece'
print(b.stream) # prints 'mech'

Выход:

cse
cse
Geek
Nerd
1
2
cse
ece
cse
ece
mech