Python supports object-oriented programming, which means we can use class and objects to create the programs. In the class, we can define two types of variables, class variables and instance variables. Both the variables are similar to the regular variables that we define in the function and global scope, but accessing and using these two types of variables with objects can be tricky for a new Python learner.
In this Python tutorial, we are going to discuss what is the difference between these two variables and see how they work. We will also explore some examples that demonstrate the use of these variables and their functionalities. so let's get started with Class variables.
What are Python class variables?
The class variables are the variables that are defined in the root scope of the class. The value of the class variables is shared amongst all the objects of the class. The value of the class variables is created when we define the class itself.
Example
class Car: # class variable company = "Maruti Suzuki" # create the object of the class raj_car = Car() # access car company print(raj_car.company)
Output
Maruti SuzukiIn the above example, our class name is
  Car
 
 , and it has only one class variable
 
  company
 
 . In this example, we have only defined one class variable, but a class can have an arbitrary number of class variables.
 Accessing Class variable
Now we know what a class variable is and how we can define it. Now let's discuss how we can access it in our program. As the name suggests, class variable, the variable is more owned by the class than the objects of the class. Who can access the class variables? There are many ways to access class variables.- Using the Class Name
- Using the object name
- using the self (within a class method)
1. Access the Class Variable with Name
We can access a class variable outside and inside the class using the class Name.
class Car:
    # class variable
    company = "Maruti Suzuki"
# access class variable with class name
print(Car.company)
Output
Maruti Suzuki
 If we want to access the class variable inside the class method, we can either use the object
 
  self
 
 or the class name.
Example
class Car:
    # class variable
    company = "Maruti Suzuki"
    def show_company(self):
        # access class variable with self
        print("The Company Name is:", self.company)
        # access class variable with class name
        # print("The Company Name is:", Car.company)
# create the object of the class 
raj_car = Car()
raj_car.show_company()
Output
The Company Name is: Maruti Suzuki The Company Name is: Maruti Suzuki
2. Access the Class Variable with object
We can also use the object name to access a class variable outside the class.
Example
class Car:
    # class variable
    company = "Maruti Suzuki"
# create the object of the class 
raj_car = Car()
# access class variable with object
print(raj_car.company)
Output
Maruti Suzuki
3. Access the Class Variable with self
 The class variable is present in the global scope for all the methods defined in the class. And if we wish to access a class variable inside any method there, we have to take the help of the object
 
  self
 
 .  Accessing
 
  self.class_variable
 
 inside the method is similar to accessing
 
  object.class_variable
 
 outside the class.
class Car:
    # class variable
    company = "Maruti Suzuki"
    def show_company(self):
        # accessing class variable with self 
        print(self.company)
# create the object of the class 
raj_car = Car()
raj_car.show_company()
Output
Maruti Suzuki
Changing Class variables
There are only two ways to change class variables.
- Change with Class Name
- Change with object name
1. Change class variable with class name
If we access the class variable with the class name and change its value, then the changed value of the class variable will be reflected all over all the class objects.
Example
class Car:
    # class variable
    company = "Maruti Suzuki"
    def show_company(self):
        # accessing class variable with self 
        print(self.company)
# create the object of the class 
raj_car = Car()
rahul_car = Car()
# change class variable with class name 
Car.company = "Suzuki"
print("Raj Car Company:", end =" ")
raj_car.show_company()
print("Rahul Car Company:",end =" ")
rahul_car.show_company()
Output
Raj Car Company: Suzuki Rahul Car Company: Suzuki
 In the above example, we changed the
 
  company
 
 value of the class from
 
  Maruti Suzuki
 
 to
 
  Suzuki
 
 with the class name, and its change for all the objects of the class
 
  raj_car
 
 and
 
  rahul_car
 
 .
1. Change class variable with object name
If we change the class variable with the object name or self, then the change will only reflect on that particular object.
Example
class Car:
    # class variable
    company = "Maruti Suzuki"
    def show_company(self):
        # accessing class variable with self 
        print(self.company)
# create the object of the class 
raj_car = Car()
rahul_car = Car()
# change class variable with object name 
raj_car.company = "Suzuki"
print("Raj Car Company:", end =" ")
raj_car.show_company()
print("Rahul Car Company:",end =" ")
rahul_car.show_company()
Output
Raj Car Company: Suzuki Rahul Car Company: Maruti Suzuki
 In this example, we have changed the
 
  company
 
 variable using the object
 
  raj_car
 
 , that's why the change only reflects on the
 
  raj_car
 
 object.
What are Python Instance Variables?
The instance variables are more owned by the object itself. Unlike the class variable, they are not shared between two objects, and their value can be changed with every object creation. The instance variables are specified inside the class constructor and get automatically created for the class when the object of the class is created.
Example
class Car:
    # class variable
    company = "Tesla"
    def __init__(self, owner, model):
        # instance variables
        self.owner = owner
        self.model = model
    
    def show_detail(self):
        print("Owner: ", self.owner)
        print("Car Model: ", self.model)
# create the object of the class 
raj_car = Car('Raj', 'Y')
raj_car.show_detail()
Output
Owner: Raj Car Model: Y
 In this example
 
  self.owner
 
 and
 
  self.model
 
 are the two instance variables, and they only get created when we created its object
 
  raj_car
 
 .
Accessing Instance variable
To access the instance variables, we use the object name followed by the dot operator and the instance variable name.
Example
class Car:
    # class variable
    company = "Tesla"
    def __init__(self, owner, model):
        # instance variables
        self.owner = owner
        self.model = model
# create the object of the class 
raj_car = Car('Raj', 'Y')
# access instance variable with object
print("Car Owner: ", raj_car.owner)
print("Car Model: ", raj_car.model)
Output
Car Owner: Raj Car Model: Y
Changing Instance variable
The instance variable values are exclusive to individual instances or objects. If we change one object's instance variables value, it will not affect the other object's instance variables.
Example
Let's create two objects for a class and change the instance value for one of them.
class Car:
    # class variable
    company = "Tesla"
    def __init__(self, owner, model):
        # instance variables
        self.owner = owner
        self.model = model
    
    def show_detail(self):
        print("Owner: ", self.owner)
        print("Model", self.model)
# create the object of the class 
raj_car = Car('Raj', 'Y')
rahul_car = Car("Rahul", 'X')
# change the instance variable for raj_car object
raj_car.owner = "Raj Singh"
raj_car.show_detail()
rahul_car.show_detail()
Output
Owner: Raj Singh Model Y Owner: Rahul Model X
Difference Between Python Class and Instance Variables
| Parameters | Class Variables | Instance Variables | 
| Declaration | The class variables are declared within the root of the class definition. | Instance variables are declared inside the Python constructor __init__() method. | 
| Owner | Class variables are owned by the class. | Instance variables are owned by the class instance or object. | 
| Creation | Class variables get created when with the class. | The Instance variables are created with the object creation. | 
| Access | We can access a class variable with the class name and object name. | An instance variable can only be accessed using an object or self. | 
| Example | class class_name: class_variable = value | class class_name: def __init__(self): self.instance_variable = value | 
People are also reading:
- Python isinstance() function
- How to create files in Python?
- Python range() Function Explained
- How to shuffle list in Python?
- Python Take list as an input from a user
- Generate Random Float numbers in Python
- Generate Random Strings and Passwords in Python
- Nested Loops in Python
- Python random choice function to select a random item from a list and Set
- Python TypeError: ‘dict’ object is not callable solution
 
                            
                             
                                    
                                     
                          
                         