Class vs Instance Variables
Instance variables belong to individual objects. Class variables are shared across all instances of the class.
Instance Variables
class Player:
def __init__(self, name, level=1):
self.name = name # unique per player
self.level = level
self.xp = 0 # starts at 0 for everyoneClass Variables
class Player:
max_level = 100 # shared by ALL players
xp_per_level = 1000
_count = 0 # private class variable
def __init__(self, name):
self.name = name
Player._count += 1
@classmethod
def get_count(cls):
return cls._count
p1 = Player("Alice")
p2 = Player("Bob")
print(Player.get_count()) # 2
print(Player.max_level) # 100Shadowing Class Variables
class Config:
debug = False
c1 = Config()
c2 = Config()
c1.debug = True # creates an INSTANCE variable on c1 only
print(c1.debug) # True
print(c2.debug) # False (still reads class variable)
print(Config.debug) # False