Bird
Raised Fist0
Pythonprogramming~5 mins

OOP principles overview in Python - Time & Space Complexity

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Time Complexity: OOP principles overview
O(n)
Understanding Time Complexity

When we use object-oriented programming (OOP), we organize code into objects and classes. It's important to understand how the time it takes to run our programs changes as we use these OOP ideas.

We want to see how the main actions in OOP affect the program's speed when the program grows bigger.

Scenario Under Consideration

Analyze the time complexity of the following code snippet.


class Item:
    def __init__(self, value):
        self.value = value

class Container:
    def __init__(self, items):
        self.items = items

    def total_value(self):
        total = 0
        for item in self.items:
            total += item.value
        return total
    

This code defines two classes. One holds a value, and the other holds many such items and sums their values.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Looping through the list of items in total_value.
  • How many times: Once for each item in the container.
How Execution Grows With Input

As the number of items grows, the time to add their values grows too.

Input Size (n)Approx. Operations
1010 additions
100100 additions
10001000 additions

Pattern observation: The work grows directly with the number of items. Double the items, double the work.

Final Time Complexity

Time Complexity: O(n)

This means the time to run total_value grows in a straight line with the number of items.

Common Mistake

[X] Wrong: "Using classes always makes the program slower because of extra steps."

[OK] Correct: Classes organize code but do not add hidden loops. The main time depends on what the code inside the methods does, like loops over data.

Interview Connect

Understanding how loops inside class methods affect time helps you explain your code clearly. It shows you know how your program grows and runs efficiently.

Self-Check

"What if the total_value method called another method inside each item that also loops over data? How would the time complexity change?"

Practice

(1/5)
1. Which of the following is NOT one of the four main principles of Object-Oriented Programming (OOP)?
easy
A. Compilation
B. Inheritance
C. Polymorphism
D. Encapsulation

Solution

  1. Step 1: Recall the four main OOP principles

    The four main principles are Encapsulation, Inheritance, Polymorphism, and Abstraction.
  2. Step 2: Identify the option not in the list

    Compilation is a process related to converting code, not an OOP principle.
  3. Final Answer:

    Compilation -> Option A
  4. Quick Check:

    OOP principles exclude Compilation [OK]
Hint: Remember OOP principles: E, I, P, A [OK]
Common Mistakes:
  • Confusing compilation with OOP concepts
  • Mixing up abstraction with compilation
  • Thinking all programming terms are OOP principles
2. Which Python keyword is used to create a new class?
easy
A. def
B. func
C. object
D. class

Solution

  1. Step 1: Recall Python syntax for defining classes

    In Python, the keyword class is used to define a new class.
  2. Step 2: Check other options

    def defines functions, object is a base class, and func is not a Python keyword.
  3. Final Answer:

    class -> Option D
  4. Quick Check:

    Use 'class' to define classes [OK]
Hint: Classes start with 'class' keyword in Python [OK]
Common Mistakes:
  • Using def instead of class for classes
  • Confusing object with class keyword
  • Trying to use func which is invalid
3. What will be the output of this code?
class Animal:
    def speak(self):
        return "Sound"

class Dog(Animal):
    def speak(self):
        return "Bark"

pet = Dog()
print(pet.speak())
medium
A. Bark
B. Sound
C. None
D. Error

Solution

  1. Step 1: Understand inheritance and method overriding

    Dog class inherits from Animal and overrides the speak method to return "Bark".
  2. Step 2: Check which speak method is called

    pet is an instance of Dog, so pet.speak() calls Dog's speak method, returning "Bark".
  3. Final Answer:

    Bark -> Option A
  4. Quick Check:

    Overridden method returns 'Bark' [OK]
Hint: Child class method overrides parent method [OK]
Common Mistakes:
  • Expecting parent class method output
  • Confusing method overriding with overloading
  • Thinking print outputs None
4. Find the error in this code snippet:
class Car:
    def __init__(self, model):
        self.model = model

    def display(self):
        print(Model)
medium
A. Constructor name is wrong
B. Missing self in display method
C. Model should be self.model in print
D. Class name should be lowercase

Solution

  1. Step 1: Check the print statement inside display method

    The print statement uses Model which is undefined; it should use self.model to access the instance variable.
  2. Step 2: Verify other parts

    The constructor name __init__ is correct, and method has self parameter. Class name capitalization is fine.
  3. Final Answer:

    Model should be self.model in print -> Option C
  4. Quick Check:

    Use self to access instance variables [OK]
Hint: Use self.variable to access instance data [OK]
Common Mistakes:
  • Forgetting self in method parameters
  • Using variable name without self prefix
  • Thinking constructor name is incorrect
5. You want to create a class that hides its internal data and only allows access through methods. Which OOP principle does this demonstrate?
hard
A. Inheritance
B. Encapsulation
C. Polymorphism
D. Abstraction

Solution

  1. Step 1: Understand the principle of hiding data

    Hiding internal data and controlling access through methods is called Encapsulation.
  2. Step 2: Differentiate from other principles

    Inheritance is about reusing code, Polymorphism is about using methods in different ways, Abstraction is about hiding complexity but not necessarily data.
  3. Final Answer:

    Encapsulation -> Option B
  4. Quick Check:

    Data hiding = Encapsulation [OK]
Hint: Data hiding means Encapsulation [OK]
Common Mistakes:
  • Confusing encapsulation with abstraction
  • Mixing inheritance with data hiding
  • Thinking polymorphism hides data