Minimum Class Template

class Student:
    def __init__(self, name, score):
        self.name = name
        self.score = score

    def is_pass(self):
        return self.score >= 50

    def __str__(self):
        return f"{self.name}: {self.score}"

Pattern 1 โ€” Counter Object

class Counter:
    def __init__(self):
        self.count = 0
    def inc(self):
        self.count += 1
    def reset(self):
        self.count = 0

Pattern 2 โ€” Bank Account

class Account:
    def __init__(self, balance=0):
        self.balance = balance
    def deposit(self, amt):
        self.balance += amt
    def withdraw(self, amt):
        if amt > self.balance: return False
        self.balance -= amt
        return True

Pattern 3 โ€” Inheritance

class SavingsAccount(Account):
    def __init__(self, balance=0, rate=0.02):
        super().__init__(balance)
        self.rate = rate
    def apply_interest(self):
        self.balance *= 1 + self.rate

Pattern 4 โ€” Class Attribute vs Instance

class Robot:
    count = 0          # shared across instances
    def __init__(self):
        Robot.count += 1

Pattern 5 โ€” Composition

class Address:
    def __init__(self, street, city):
        self.street, self.city = street, city

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

Pattern 6 โ€” Polymorphism

class Shape:
    def area(self): raise NotImplementedError
class Circle(Shape):
    def __init__(self, r): self.r = r
    def area(self): return 3.14 * self.r ** 2
class Square(Shape):
    def __init__(self, s): self.s = s
    def area(self): return self.s * self.s

Pattern 7 โ€” Method Chaining

class Builder:
    def __init__(self): self.parts = []
    def add(self, p):
        self.parts.append(p)
        return self
b = Builder().add("engine").add("wheels").add("seats")

Practise this on PyForm โ€” free

PyForm runs Python in your browser with an AI tutor trained for HKDSE. No install, no credit card.

Open PyForm โ†’