What is the difference between a class attribute and an instance attribute in Python?
Gable E
In Python, class attributes and instance attributes are both ways to store and access data associated with a class. However, they have distinct behaviors and purposes. Here's a long-form explanation of the differences between class attributes and instance attributes:
Class Attributes:
1. Definition:
- Class attributes are variables defined within a class but outside of any methods.
- They are shared among all instances of the class and belong to the class itself.
- Class attributes are defined directly in the class body, typically at the top, and are accessed using the class name or any instance of the class.
2. Access and Modification:
- Class attributes can be accessed and modified by any instance of the class or by the class itself.
- When accessing a class attribute, Python first checks if the attribute exists in the instance. If not found, it looks for the attribute in the class.
- Modifying a class attribute affects all instances of the class, as they share the same attribute value.
3. Example:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class MyClass:
class_attribute = "Class Value"
instance1 = MyClass()
instance2 = MyClass()
print(instance1.class_attribute) # Output: Class Value
print(instance2.class_attribute) # Output: Class Value
MyClass.class_attribute = "New Value"
print(instance1.class_attribute) # Output: New Value
print(instance2.class_attribute) # Output: New Value
Instance Attributes:
1. Definition:
- Instance attributes are variables specific to each instance of a class.
- They are defined and accessed within methods or the__init__ method (constructor) of the class.
- Each instance of the class has its own set of instance attributes, which are separate from other instances.
2. Access and Modification: