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()