Trusted answers to developer questions
Trusted Answers to Developer Questions

Related Tags

python
class
attribute

What is a Python class attribute?

Educative Answers Team

Class attributes are variables of a class that are shared between all of its instances. They differ from instance attributes in that instance attributes are owned by one specific instance of the class only, and ​are not shared between instances. This is highlighted in the illustration below:

svg viewer
Both the objects share the class attribute var1, but each of them has its own var2.

Code

Example 1

Consider the following code snippet which highlights how different objects of a class share the same class attribute:

class classA(object):
    classAtr = "I am the same for all objects."

    def __init__(self, ins_var):
        self.instanceVar = ins_var

# Make 3 objects and initialise them with different values
obj1 = classA(5)
obj2 = classA(10)
obj3 = classA(15)

print("I am obj1 and my attributes are: ")
print("Class Attribute: ", obj1.classAtr)
print("Instance Attribute:", obj1.instanceVar ,"\n")

print("I am obj2 and my attributes are: ")
print("Class Attribute: ", obj2.classAtr)
print("Instance Attribute: ", obj2.instanceVar, "\n")

print("I am obj3 and my attributes are: ")
print("Class Attribute: ", obj3.classAtr)
print("Instance Attribute: ", obj3.instanceVar, "\n")

Example 2

Consider the following code snippet:

class classA(object):
    classAtr = "I am a class attribute."

obj1 = classA()
obj2 = classA()

obj1.classAtr = "abc" 

print(obj1.classAtr)
print(obj2.classAtr)

​Assigning “abc” to obj1's classAtr did not change the value of the class attribute for obj2. This is because class attributes must be changed using the class’s name, instead of the object’s name.

Example 3

The following code snippet shows the correct way to change a class attribute:

class classA(object):
    classAtr = "I am a class attribute."

obj1 = classA()
obj2 = classA()

classA.classAtr = "I changed the class attribute." 

print(obj1.classAtr)
print(obj2.classAtr)

RELATED TAGS

python
class
attribute
Copyright ©2022 Educative, Inc. All rights reserved
RELATED COURSES

View all Courses

Keep Exploring