Python 24-Day CourseDay 13pythonintermediate
Python 24-Day Course - Day 13: Class Basics
· 2 min read
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
| Type | Class Variable | Instance Variable |
|---|
| Location | Class body | Inside __init__ |
| Sharing | Shared across all instances | Unique to each instance |
| Access | Class.var or self.var | self.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
- Create a
Student class with name, per-subject scores, and an average calculation feature.
- Implement
Rectangle class with area, perimeter, and an is-square check as properties.
- Build a
TodoList class with add, delete, and mark-as-complete functionality.
Was this article helpful?
Thanks for your feedback!