Use cases for each method type in Python - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
When we use different types of methods in Python classes, their time cost can vary depending on how they access data.
We want to see how the choice of method type affects how long the program takes as input grows.
Analyze the time complexity of these method types in a class.
class Example:
class_var = [i for i in range(1000)]
def instance_method(self, n):
return sum(self.class_var[:n])
@classmethod
def class_method(cls, n):
return sum(cls.class_var[:n])
@staticmethod
def static_method(n):
return sum(range(n))
This code shows three method types accessing data differently and summing numbers up to n.
Look at what repeats when each method runs.
- Primary operation: Summing numbers in a list or range.
- How many times: The sum runs over n items each call.
As n grows, the sum operation takes longer because it adds more numbers.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 additions |
| 100 | 100 additions |
| 1000 | 1000 additions |
Pattern observation: The work grows directly with n, so doubling n doubles the work.
Time Complexity: O(n)
This means the time to run these methods grows in a straight line with the input size n.
[X] Wrong: "Static methods are always faster because they don't use class or instance data."
[OK] Correct: Static methods can still do work proportional to input size, like summing n numbers, so their time depends on what they do, not just method type.
Understanding how method types affect time helps you explain your code choices clearly and shows you know how data access impacts performance.
What if the instance method accessed a large nested list instead of a simple list? How would that change the time complexity?
Practice
Solution
Step 1: Understand instance methods
Instance methods receive the object itself as the first argument and can access or modify instance-specific data.Step 2: Compare with other methods
Class methods work with class-level data, static methods don't access instance or class data, and global functions are outside the class.Final Answer:
Instance method -> Option BQuick Check:
Instance method = unique object data [OK]
- Confusing class methods with instance methods
- Thinking static methods access instance data
- Assuming global functions are methods
Solution
Step 1: Recall class method syntax
Class methods use the @classmethod decorator and receive the class as the first argument, usually named 'cls'.Step 2: Check options
@classmethod\ndef method(cls): matches this syntax exactly; others define instance or static methods or lack decorators.Final Answer:
@classmethod\ndef method(cls): -> Option DQuick Check:
Class method = @classmethod + cls parameter [OK]
- Using 'self' instead of 'cls' for class methods
- Missing the @classmethod decorator
- Confusing static method syntax with class methods
class Example:
count = 0
def __init__(self):
Example.count += 1
@classmethod
def get_count(cls):
return cls.count
obj1 = Example()
obj2 = Example()
print(Example.get_count())Solution
Step 1: Understand the constructor behavior
Each time an Example object is created, the class variable 'count' increases by 1. Two objects are created, so count becomes 2.Step 2: Understand the class method output
The class method 'get_count' returns the current value of 'count', which is 2 after creating two objects.Final Answer:
2 -> Option AQuick Check:
Class variable incremented twice = 2 [OK]
- Thinking count resets per instance
- Confusing instance and class variables
- Expecting an error due to method call
class Calculator:
@staticmethod
def add(x, y):
return x + y
@classmethod
def multiply(cls, x, y):
return x * y
print(Calculator.add(2, 3))
print(Calculator.multiply(2, 3))Solution
Step 1: Check static method definition
Static methods do not require 'self' or 'cls'; 'add' is correctly defined with two parameters.Step 2: Check class method definition
Class method 'multiply' correctly has 'cls' as the first parameter and two others; usage is correct.Final Answer:
No error, code runs correctly -> Option AQuick Check:
Static and class methods correctly defined [OK]
- Expecting 'self' in static methods
- Confusing 'self' and 'cls' in class methods
- Assuming method calls require instance
Solution
Step 1: Identify method requirements
The method only logs a message and does not need to access instance or class data.Step 2: Choose appropriate method type
Static methods are designed for tasks related to the class but do not use instance or class data, making them ideal here.Final Answer:
Static method, because it does not require instance or class data -> Option CQuick Check:
Logging without data access = static method [OK]
- Using instance or class methods unnecessarily
- Confusing static methods with global functions
- Thinking logging requires instance data
