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
Why object-oriented programming is used
📖 Scenario: Imagine you are organizing a small library. You want to keep track of books and their details like title, author, and whether they are borrowed or not.
🎯 Goal: You will create a simple program using object-oriented programming to represent books and check their status.
📋 What You'll Learn
Create a class called Book with attributes for title, author, and borrowed status
Create an instance of Book with specific details
Add a method to check if the book is borrowed
Print the book details and borrowed status
💡 Why This Matters
🌍 Real World
Object-oriented programming helps organize data and behavior together, like keeping track of books in a library system.
💼 Career
Many software jobs use object-oriented programming to build clear and reusable code for applications.
Progress0 / 4 steps
1
Create the Book class
Create a class called Book with an __init__ method that takes title, author, and borrowed as parameters and assigns them to instance variables.
Python
Hint
Use class Book: to start the class. Inside, define __init__ with self and the three parameters. Assign each parameter to self variables.
2
Create a Book instance
Create a variable called my_book and assign it an instance of Book with title 'The Little Prince', author 'Antoine de Saint-Exupéry', and borrowed status False.
Python
Hint
Use the class name Book with parentheses and pass the exact values for title, author, and borrowed status.
3
Add a method to check borrowed status
Inside the Book class, add a method called is_borrowed that returns the value of self.borrowed.
Python
Hint
Define a method with def is_borrowed(self): and return self.borrowed.
4
Print book details and borrowed status
Print the book's title and author using my_book.title and my_book.author. Then print Borrowed: followed by the result of my_book.is_borrowed().
Python
Hint
Use print with f-strings to show the title, author, and borrowed status by calling my_book.is_borrowed().
Practice
(1/5)
1. Why do programmers use object-oriented programming (OOP)?
easy
A. To avoid using any functions or variables
B. To group related data and actions into objects
C. To make programs run faster by skipping steps
D. To write code only once without any changes
Solution
Step 1: Understand the purpose of OOP
OOP is designed to group related data and actions together as objects, making code easier to manage.
Step 2: Compare options with OOP goals
Only To group related data and actions into objects correctly describes grouping data and actions. Other options misunderstand OOP's purpose.
Final Answer:
To group related data and actions into objects -> Option B
Quick Check:
OOP groups data and actions = D [OK]
Hint: OOP bundles data and actions together [OK]
Common Mistakes:
Thinking OOP just makes code faster
Believing OOP avoids functions completely
Assuming OOP means no code changes
2. Which of the following is the correct way to define a simple class in Python?
easy
A. class Car:
def __init__(self, color):
self.color = color
B. def Car:
color = 'red'
C. class Car():
color = 'red'
def __init__(self):
pass
D. class Car:
def __start__(self):
print('Start')
Solution
Step 1: Check class syntax
class Car:
def __init__(self, color):
self.color = color correctly defines a class with an __init__ method and assigns an instance variable.
Step 2: Identify syntax errors in other options
def Car:
color = 'red' uses def instead of class. class Car():
color = 'red'
def __init__(self):
pass lacks proper __init__ usage for color. class Car:
def __start__(self):
print('Start') uses __start__ which is not a special method.
Final Answer:
class Car:\n def __init__(self, color):\n self.color = color -> Option A
Quick Check:
Correct class with __init__ = B [OK]
Hint: Class needs __init__ method for attributes [OK]
Common Mistakes:
Using def instead of class to define a class
Missing self parameter in methods
Using wrong special method names
3. What will be the output of this code?
class Dog:
def __init__(self, name):
self.name = name
def speak(self):
return self.name + ' says Woof!'
my_dog = Dog('Buddy')
print(my_dog.speak())
medium
A. Buddy
B. Woof! says Buddy
C. Buddy says Woof!
D. Error: speak() missing self argument
Solution
Step 1: Understand class and method behavior
The Dog class stores a name and the speak method returns the name plus ' says Woof!'.
Step 2: Trace the code execution
Creating my_dog with name 'Buddy' and calling speak() returns 'Buddy says Woof!'.
Final Answer:
Buddy says Woof! -> Option C
Quick Check:
Method returns name + ' says Woof!' = A [OK]
Hint: Method returns name plus message string [OK]
Common Mistakes:
Mixing order of words in output
Forgetting to pass self in method
Expecting error due to method call
4. Find the error in this class definition:
class Person:
def __init__(self, name):
name = name
def greet(self):
print('Hello, ' + self.name)
medium
A. The class is missing a constructor method
B. The greet method should return a string, not print
C. The class name should be lowercase
D. The __init__ method does not assign name to self.name
Solution
Step 1: Check __init__ method variable assignment
The __init__ method assigns name to a local variable 'name', not to self.name, so the instance has no name attribute.
Step 2: Understand impact on greet method
greet tries to access self.name which does not exist, causing an error.
Final Answer:
The __init__ method does not assign name to self.name -> Option D
Quick Check:
Missing self.name assignment = C [OK]
Hint: Assign to self.name inside __init__ [OK]
Common Mistakes:
Assigning to local variable instead of self attribute
Thinking print vs return causes error here
Believing class name case matters for error
5. You want to model a library system where each book has a title and author, and you want to reuse code for different types of books. Which OOP feature helps you do this efficiently?
hard
A. Inheritance to create specialized book classes
B. Using only global variables for all books
C. Writing separate functions for each book type
D. Avoiding classes and using plain text files
Solution
Step 1: Understand the need for code reuse and specialization
Different types of books share common features but may have unique details.
Step 2: Identify OOP feature for reuse and extension
Inheritance allows creating new classes based on existing ones, reusing code and adding specifics.
Final Answer:
Inheritance to create specialized book classes -> Option A
Quick Check:
Reuse and extend code = Inheritance = A [OK]
Hint: Use inheritance to reuse and extend code [OK]
Common Mistakes:
Thinking global variables help organize objects
Believing separate functions are better than classes