User Tools

Site Tools


Difference between CLASS and INSTANCE variables



Class variable: A variable that is shared by all instances of a class. Class variables are defined within a class but outside any of the class's methods.
Instance variable: A variable that is defined inside a method and belongs only to the current instance of a class.


On use via instance (self.x), search order:

  1. instance
  2. class
  3. base classes

(this also works for method lookup)

On assignment via instance (self.x = …) ALWAYS makes an instance variable


Class Variable

class A(object):
    class_var = 0 # defined here
    def __init__(self):
        A.class_var += 1
        # self.class_var +=1 -> transform it to instance variable
if __name__ == "__main__":
    first_ob = A()
    print first_ob.class_var
    second_ob = A()
    print second_ob.class_var
    third_ob = A()
    print third_ob.class_var

The run of this script will give:

$ python 

Note: if instead of class_var = 0, you'd have class_var = [] (a list), and you'd be using self.class_var.append(elem), the list will be shared among class objects and it will always add new elements.
self here will get the class variable (because there is no instance variable) and append to it, thus the kind of the variable will no be changed.

Note: using self.class_var += 1 is equivalent to self.class_var = self.class_var + 1 which is in fact an assignment via instance (transforming it into instance variable from class variable)

python/class_instance_variables.txt · Last modified: 2013/03/16 16:40 (external edit)