1. Class methods (using @classmethod
decorator):
- Purpose: Class methods operate on the class itself rather than specific instances. They are often used for:
- Factory methods: Creating objects with different configurations based on provided arguments.
- Utility functions: Performing actions related to the class as a whole, such as validation or data manipulation.
- Calling: You call class methods using the class name followed by a dot and the method name (e.g.,
ClassName.class_method()
).
Example:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
@classmethod
def from_birth_year(cls, name, birth_year):
age = 2024 - birth_year
return cls(name, age) # Returning a new instance
person1 = Person.from_birth_year("Alice", 1990) # Call class method without creating Person first
########
2. Static methods (using @staticmethod
decorator):
- Purpose: Static methods are essentially regular functions defined within the class for reusability. They don't receive the class or instance automatically as arguments. They are useful for:
- Helper functions: Providing utility functions that don't rely on class or instance attributes and can be used independently.
- Mathematical or string manipulation functions: Implementing functions that don't necessarily relate to the class itself but can be conveniently grouped within the class.
- Calling: You call static methods similar to class methods (e.g.,
ClassName.static_method()
).
example :
class Utility:
@staticmethod
def is_even(number):
return number % 2 == 0
is_eight_even = Utility.is_even(8) # Call static method without creating Utility first