Bird
Raised Fist0
Pythonprogramming~5 mins

Classes and objects in Python

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
Introduction

Classes help you create your own blueprints for things. Objects are the actual things made from those blueprints.

When you want to group related data and actions together, like a car with color and speed.
When you want to create many similar things, like many dogs with different names.
When you want to organize your code better by keeping data and functions in one place.
When you want to model real-world things in your program, like a bank account or a book.
Syntax
Python
class ClassName:
    def __init__(self, parameters):
        self.attribute = value

    def method(self):
        # code here

# Create an object
obj = ClassName(arguments)

class defines a new blueprint.

__init__ is a special method that runs when you make a new object.

Examples
This creates a Dog with a name and a bark action.
Python
class Dog:
    def __init__(self, name):
        self.name = name

    def bark(self):
        print(f"{self.name} says Woof!")

my_dog = Dog("Buddy")
my_dog.bark()
This creates a Car with color and speed, then drives it.
Python
class Car:
    def __init__(self, color, speed):
        self.color = color
        self.speed = speed

    def drive(self):
        print(f"Driving at {self.speed} km/h")

car1 = Car("red", 100)
car1.drive()
Sample Program

This program creates a Person named Alice who is 30 years old and then says hello.

Python
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")

person1 = Person("Alice", 30)
person1.greet()
OutputSuccess
Important Notes

Use self to refer to the current object inside methods.

You can create many objects from one class, each with its own data.

Classes help keep your code organized and easy to understand.

Summary

Classes are blueprints for creating objects.

Objects hold data and can do actions defined by their class.

Use classes to model real-world things and organize your code.

Practice

(1/5)
1. What is the main purpose of a class in Python?
easy
A. To execute code immediately
B. To store data in variables only
C. To create a blueprint for objects
D. To perform mathematical calculations

Solution

  1. Step 1: Understand what a class represents

    A class is like a blueprint or template that defines how objects are created and what they can do.
  2. Step 2: Identify the role of a class

    Classes organize code by grouping data and functions that belong together, allowing creation of many objects from the same blueprint.
  3. Final Answer:

    To create a blueprint for objects -> Option C
  4. Quick Check:

    Class = blueprint for objects [OK]
Hint: Classes define blueprints; objects are instances [OK]
Common Mistakes:
  • Thinking classes run code immediately
  • Confusing classes with simple variables
  • Believing classes only store data
2. Which of the following is the correct way to define a class named Car in Python?
easy
A. class Car():
B. def Car():
C. function Car():
D. Car class:

Solution

  1. Step 1: Recall Python class syntax

    In Python, classes are defined using the keyword class followed by the class name and parentheses.
  2. Step 2: Check each option

    class Car(): uses class Car(): which is correct syntax. Others use wrong keywords or formats.
  3. Final Answer:

    class Car(): -> Option A
  4. Quick Check:

    Class definition starts with 'class' keyword [OK]
Hint: Use 'class ClassName():' to define a class [OK]
Common Mistakes:
  • Using 'def' instead of 'class'
  • Using 'function' keyword (not Python)
  • Missing 'class' keyword
3. What will be the output of this code?
class Dog():
    def __init__(self, name):
        self.name = name
    def bark(self):
        return f"{self.name} says Woof!"

my_dog = Dog("Buddy")
print(my_dog.bark())
medium
A. Error: missing self parameter
B. Buddy says Woof!
C. Dog says Woof!
D. Woof!

Solution

  1. Step 1: Understand the __init__ method

    The __init__ method sets the name attribute to "Buddy" when my_dog is created.
  2. Step 2: Analyze the bark method call

    The bark method returns a string using the dog's name, so it returns "Buddy says Woof!".
  3. Final Answer:

    Buddy says Woof! -> Option B
  4. Quick Check:

    Method uses self.name = Buddy [OK]
Hint: Methods use self to access object data [OK]
Common Mistakes:
  • Forgetting to pass 'self' in methods
  • Confusing class name with object name
  • Expecting method to print instead of return
4. Find the error in this class definition:
class Person():
    def __init__(self, name):
        name = name

p = Person("Alice")
print(p.name)
medium
A. Class name should be lowercase
B. Missing self in __init__ parameters
C. print(p.name) should be print(name)
D. Should assign to self.name, not name

Solution

  1. Step 1: Check attribute assignment in __init__

    The code assigns name = name, which only changes the local variable, not the object's attribute.
  2. Step 2: Correct assignment to object attribute

    It should be self.name = name to store the value in the object for later access.
  3. Final Answer:

    Should assign to self.name, not name -> Option D
  4. Quick Check:

    Use self.attribute = value to save data [OK]
Hint: Assign attributes with self.attribute = value [OK]
Common Mistakes:
  • Assigning to local variable instead of self.attribute
  • Forgetting self in method parameters
  • Trying to print undefined variables
5. You want to create a class BankAccount that stores an account holder's name and balance. It should have a method deposit(amount) that adds money to the balance only if the amount is positive. Which code correctly implements this?
hard
A. class BankAccount(): def __init__(self, name, balance=0): self.name = name self.balance = balance def deposit(self, amount): if amount > 0: self.balance += amount
B. class BankAccount(): def __init__(self, name): self.name = name balance = 0 def deposit(self, amount): self.balance = self.balance + amount
C. class BankAccount(): def __init__(self, name, balance=0): self.name = name self.balance = balance def deposit(self, amount): self.balance += amount
D. class BankAccount(): def __init__(self, name): self.name = name self.balance = 0 def deposit(self, amount): if amount >= 0: self.balance = amount

Solution

  1. Step 1: Check __init__ method for attributes

    class BankAccount(): def __init__(self, name, balance=0): self.name = name self.balance = balance def deposit(self, amount): if amount > 0: self.balance += amount correctly sets self.name and self.balance with a default balance of 0.
  2. Step 2: Verify deposit method logic

    class BankAccount(): def __init__(self, name, balance=0): self.name = name self.balance = balance def deposit(self, amount): if amount > 0: self.balance += amount adds amount to self.balance only if amount > 0, which matches the requirement.
  3. Final Answer:

    Correctly implements the class with proper attribute initialization and deposit validation -> Option A
  4. Quick Check:

    Check attribute setup and positive amount condition [OK]
Hint: Check attribute setup and validate input in methods [OK]
Common Mistakes:
  • Not using self.balance to store balance
  • Adding amount without checking if positive
  • Overwriting balance instead of adding
  • Missing default balance initialization