Про
статические переменные класса понаписано много, например,
Static class variables in Python или
Статические переменные класса в Python
Статическая переменная - это переменная, которая была распределена статически, что означает, что ее время жизни - это весь запуск программы. Статические переменные существуют только в одном экземпляре для каждого класса и не создаются.
В Python переменные, объявленные внутри определения класса, но не внутри метода, являются переменными класса или статики.
Но тут всё не так просто:
Код: Выделить всё
#!/usr/bin/python3
class Spam1:
counter = 0
def __init__( self ):
self.counter += 1
print( self.counter )
def get( self ):
return self.counter
print( Spam1.counter )
a1 = Spam1()
a2 = Spam1()
a3 = Spam1()
print( Spam1.counter )
Код: Выделить всё
olej@ACER:~/2019_WORK/own.WORK/python$ ./stat1.py
0
1
1
1
0
Это очевидно не то, что мы желали получить ... по крайней мере, по аналогии с C/C++ ...
По времени жизни это переменная класса, вызываемая как Spam1.counter, ранее создания 1-го объекта класса, но это не сохраняющая значение между вызовами переменная, статическая.