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
Post a Comment