Classes and Objects Deep Dive

Advanced PythonOOPFree Lesson

Advertisement

Introduction

Advanced object-oriented programming concepts including metaclasses, descriptors, and slots.

Data Classes

from dataclasses import dataclass, field
from typing import List

@dataclass
class Point:
    x: float
    y: float
    
    def distance_from_origin(self):
        return (self.x**2 + self.y**2) ** 0.5

@dataclass
class Person:
    name: str
    age: int
    friends: List[str] = field(default_factory=list)

Slots

class WithoutSlots:
    def __init__(self, x):
        self.x = x  # Stored in __dict__

class WithSlots:
    __slots__ = ['x']
    def __init__(self, x):
        self.x = x  # No __dict__, more memory efficient

Descriptors

class Temperature:
    def __get__(self, obj, objtype=None):
        return obj._celsius
    
    def __set__(self, obj, value):
        obj._celsius = value

class Room:
    temperature = Temperature()
    
    def __init__(self, temp):
        self.temperature = temp

Practice Problems

  1. Create a data class for a rectangle
  2. Compare memory usage with and without slots
  3. Implement a descriptor for validation
  4. Add default values to data class
  5. Create frozen (immutable) data class

Advertisement

Need Expert Python Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement