An instance method is the most common type and operates on an instance of the class. It takes
self
as its first parameter, allowing it to access and modify instance attributes. For example, in a Person
class, def greet(self):
can access self.name
to print a greeting.A class method, defined with the
@classmethod
decorator, operates on the class rather than instances. It takes cls
as its first parameter, allowing it to modify class-level attributes shared across all instances. For example, def set_species(cls, species):
in a Person
class can change a class attribute like cls.species
. Class methods are useful when the method needs to affect the class as a whole rather than individual instances.A static method, defined with the
@staticmethod
decorator, does not take self
or cls
as a parameter. It behaves like a regular function but is logically related to the class. It does not access instance or class attributes and is used for utility functions. For example, def is_adult(age):
inside a Person
class can check if a given age qualifies as adult, without referencing any class or instance data.In summary, instance methods operate on object instances, class methods modify class-level data, and static methods are independent utility functions grouped within a class for organizational purposes.