A class is a blueprint for the creation of different objects. When the objects get created to form the class, they no longer depend on the class attribute. Also, the class has no control over the attributes of the instances created.
In the below example we see the MainClass having a class attributes and the objects created from the main class having their own attribute values. Printing these values gives us clarity. In the end the class cannot access the values of the object attributes.
Example
class MainClass(object):
class_attr = 'Sun'
def __init__(self, instance_attr):
self.instance_attr = instance_attr
if __name__ == '__main__':
obj1 = MainClass('Mon')
obj2 = MainClass('Tue')
# print the instance attributes
print (obj1.instance_attr)
print (obj2.instance_attr)
#print the class attribute using Mainclass
print(MainClass.class_attr)
#print the classattribute using objects
print (obj1.class_attr)
print (obj2.class_attr)
#printing instance attribute as a class property gives error
#print (MainClass.instance_attr)Output
Running the above code gives us the following result −
Mon Tue Sun Sun Sun