Static Variables in Python

Python Class Static Variable

  • A variable defined inside a class but outside the method is called a static variable.
Example : 

#program to static variable

class Team :
team_name =
"INDIA"                # team_name is a static variable
No_of_players = 11                 # No_of_players is a static variable

def display_team_member(self,player_list):
for name in player_list :
print(name)
print()

  • They get memory at class loading time.
  • As class load once, so static variable(s) get memory once.
  • We can use class name to call static variable, without creating an object.
Example : 

#program to define class

class Team :
team_name =
"INDIA"
No_of_players = 11

def display_team_member(self,player_list):
for name in player_list :
print(name)
print()

print("Team_Name", Team.team_name)            # calling by class name without creating Object
print("No of player : ", Team.No_of_players)  # this call proves that static variable gets memory at class loading time

 #Output

Team_Name INDIA
No of player :
11


  • They hold common values for every Object.
Example : 

#program

class Team :
team_name =
"INDIA"
No_of_players = 11

def display_team_member(self,player_list):
for name in player_list :
print(name)
print()

print("Team_Name", Team.team_name)
print("No of playesr : ", Team.No_of_players)

ODI = Team()
print("\nODI Team_Name", ODI.team_name)
print("No of playesrs in ODI : ", ODI.No_of_players)

TEST = Team()
print("\nTEST Team_Name", TEST.team_name)
print("No of playesrs in TEST : ", TEST.No_of_players)

 #output

Team_Name INDIA
No of playesr :
11

ODI Team_Name INDIA
No of playesrs
in ODI : 11

TEST Team_Name INDIA
No of playesrs
in TEST : 11


  • If we change the value of a static variable,
    • by class
Example:

#program

class Team :
team_name =
"INDIA-A"
No_of_players = 11

def display_team_member(self,player_list):
for name in player_list :
print(name)
print()

print("Team_Name", Team.team_name)
print("No of player : ", Team.No_of_players)

ODI = Team()
print("\nODI Team_Name", ODI.team_name)
print("No of players in ODI : ", ODI.No_of_players)

TEST = Team()
print("\nTEST Team_Name", TEST.team_name)
print("No of players in TEST : ", TEST.No_of_players)

Team.team_name =
"INDIA-B" # changing team name by Class name

print("Team_Name", Team.team_name)
print("No of player : ", Team.No_of_players)

print("\nODI Team_Name", ODI.team_name)
print("No of players in ODI : ", ODI.No_of_players)

print("\nTEST Team_Name", TEST.team_name)
print("No of players in TEST : ", TEST.No_of_players)

 #output

Team_Name INDIA-A
No of player :
11

ODI Team_Name INDIA-A
No of players
in ODI : 11

TEST Team_Name INDIA-A
No of players
in TEST : 11
Team_Name INDIA-B
No of player :
11

ODI Team_Name INDIA-B
No of players
in ODI : 11

TEST Team_Name INDIA-B
No of players
in TEST : 11

it will change for all the objects of the class.

    • by Object
Example : 

#program

class Team :
team_name =
"INDIA-A"
No_of_players = 11

def display_team_member(self,player_list):
for name in player_list :
print(name)
print()

print("Team_Name", Team.team_name)
print("No of players : ", Team.No_of_players)

ODI = Team()
print("\nODI Team_Name", ODI.team_name)
print("No of players in ODI : ", ODI.No_of_players)

TEST = Team()
print("\nTEST Team_Name", TEST.team_name)
print("No of players in TEST : ", TEST.No_of_players)

ODI.team_name =
"INDIA-B" # changing team name by object ODI

print("Team_Name", Team.team_name)
print("No of players : ", Team.No_of_players)

print("\nODI Team_Name", ODI.team_name)
print("No of players in ODI : ", ODI.No_of_players)

print("\nTEST Team_Name", TEST.team_name)
print("No of players in TEST : ", TEST.No_of_players)

 #output

Team_Name INDIA-A
No of player :
11

ODI Team_Name INDIA-A
No of player in
ODI : 11

TEST Team_Name INDIA-A
No of player in
TEST : 11
Team_Name INDIA-A
No of player :
11

ODI Team_Name INDIA-B
No of player in
ODI : 11

TEST Team_Name INDIA-A
No of player in
TEST : 11

it will be changed for the specific object only, for rest of the objects, value will remain unchanged.





Comments

My photo
Techno Xpresss
Bangalore, Karnataka, India