Class attributes store information shared by all objects of a class. They help keep common data in one place.
Class attributes in Python
class ClassName:
class_attribute = valueClass attributes are defined directly inside the class, but outside any methods.
All instances share the same class attribute unless overridden in the instance.
species is a class attribute shared by all Dog objects.class Dog: species = "Canis familiaris"
car1 and car2 share the same wheels class attribute.class Car: wheels = 4 car1 = Car() car2 = Car() print(car1.wheels) # prints 4 print(car2.wheels) # prints 4
total_books counts how many Book objects are created.class Book: total_books = 0 def __init__(self): Book.total_books += 1
This program shows how the class attribute school_name is shared by all Student objects. Changing it on the class changes it for all students.
class Student: school_name = "Greenwood High" def __init__(self, name): self.name = name # Create two students student1 = Student("Alice") student2 = Student("Bob") # Print their school name (class attribute) print(student1.name + " goes to " + student1.school_name) print(student2.name + " goes to " + student2.school_name) # Change class attribute Student.school_name = "Sunrise Academy" print(student1.name + " now goes to " + student1.school_name) print(student2.name + " now goes to " + student2.school_name)
If you assign a value to a class attribute using an instance (like student1.school_name = 'New School'), it creates a new instance attribute and does not change the class attribute.
Use class attributes for data shared by all instances, and instance attributes for data unique to each object.
Class attributes hold data shared by all objects of a class.
They are defined inside the class but outside methods.
Changing a class attribute affects all instances unless they have their own attribute with the same name.