Python 24-Day Course - Day 13: Class Basics

Day 13: Class Basics

Defining a Class

class Dog:
    species = "Canis familiaris"  # Class variable

    def __init__(self, name, age):
        self.name = name   # Instance variable
        self.age = age

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

    def info(self):
        return f"{self.name}, {self.age} years old"

my_dog = Dog("Buddy", 3)
print(my_dog.bark())   # Buddy says Woof!
print(my_dog.info())   # Buddy, 3 years old

Class Variables vs Instance Variables

TypeClass VariableInstance Variable
LocationClass bodyInside __init__
SharingShared across all instancesUnique to each instance
AccessClass.var or self.varself.var

Bank Account Example

class BankAccount:
    def __init__(self, owner, balance=0):
        self.owner = owner
        self._balance = balance  # Conventionally private

    def deposit(self, amount):
        if amount <= 0:
            raise ValueError("Deposit amount must be positive")
        self._balance += amount
        return self._balance

    def withdraw(self, amount):
        if amount > self._balance:
            raise ValueError("Insufficient balance")
        self._balance -= amount
        return self._balance

    def get_balance(self):
        return self._balance

account = BankAccount("Alice", 10000)
account.deposit(5000)
account.withdraw(3000)
print(f"Balance: {account.get_balance()}")  # Balance: 12000

Properties

class Circle:
    def __init__(self, radius):
        self._radius = radius

    @property
    def radius(self):
        return self._radius

    @radius.setter
    def radius(self, value):
        if value < 0:
            raise ValueError("Radius cannot be negative")
        self._radius = value

    @property
    def area(self):
        return 3.14159 * self._radius ** 2

c = Circle(5)
print(c.area)     # 78.53975
c.radius = 10
print(c.area)     # 314.159

Today’s Exercises

  1. Create a Student class with name, per-subject scores, and an average calculation feature.
  2. Implement Rectangle class with area, perimeter, and an is-square check as properties.
  3. Build a TodoList class with add, delete, and mark-as-complete functionality.

Was this article helpful?