Python OOP Advanced

Advanced Object-Oriented Programming: inheritance, polymorphism, magic methods, and class decorators.

Inheritance

# Base class
class Animal:
    def __init__(self, name):
        self.name = name
    
    def speak(self):
        pass

# Derived class
class Dog(Animal):
    def speak(self):
        return "Woof!"

Super Function

# Call parent method
class Student(Person):
    def __init__(self, name, grade):
        super().__init__(name)
        self.grade = grade

Magic Methods

# String representation
def __str__(self):
    return f"Book: {self.title}"

# Comparison
def __eq__(self, other):
    return self.age == other.age

def __lt__(self, other):
    return self.age < other.age

Operator Overloading

# Arithmetic operators
def __add__(self, other):
    return Vector(self.x + other.x)

def __mul__(self, scalar):
    return Vector(self.x * scalar)

Property Decorators

# Getter
@property
def temperature(self):
    return self._temperature

# Setter
@temperature.setter
def temperature(self, value):
    self._temperature = value

Class Methods

# Class method
@classmethod
def from_string(cls, date_str):
    day, month, year = date_str.split("-")
    return cls(day, month, year)

# Static method
@staticmethod
def is_valid(date_str):
    return len(date_str) == 10

Abstract Classes

from abc import ABC, abstractmethod

class Shape(ABC):
    @abstractmethod
    def area(self):
        pass

class Circle(Shape):
    def area(self):
        return 3.14 * self.r ** 2

Context Managers

# Context manager class
class FileManager:
    def __enter__(self):
        self.file = open(self.filename)
        return self.file
    
    def __exit__(self, *args):
        self.file.close()