External Exam Download Resources Web Applications Games Recycle Bin

Variable Scope

instance variables.py

class athlete:
    def __init__(self):
         self.event = "Commonwealth Games"

mary = athlete()
mary.event = "Olympics"
print(mary.event)


class variables.py

class athlete:
    event = "Commonwealth Games"

#initialise instances:
#all athletes at Commonwealth Games:
steve = athlete()
joan = athlete()
print(steve.event)
print(joan.event)

#change the __class__ blueprint variable,
#which changes all the instances of that class.
#Now all athletes at World Championships:
athlete.event = "World Championships"
print(steve.event)
print(joan.event)

#Because i'm referring to the instance Steve,
#the class variable 'event' for Steve
#is now owned by the instance Steve:
steve.event = "injured - not competing"

#So if i update the athlete class,
#Steve's event wont change (unlike Joan's):
athlete.event = "Olympics"

print(steve.event) #prints "injured - not competing"
print(joan.event) #prints "Olympics"


  1. construct a class called "Student" that has a self.property named "Name", that stores the name of the student (e.g. Storme or Kirra).
  2. in your student class, add a class variable called student number.
  3. create two new students - Kirra and Storme. each time, increase the class variable student number by one.

For more information on Python class variable scope check out these Stack Overflow dicussions:
Variables inside and outside of a class __init__() function
Changing variables in multiple Python instances