Advanced Class Methods

Python OOPFree Lesson

Advertisement

Advanced Class Methods

Static methods, class methods, abstract methods, and method patterns.

Overview

Master advanced method patterns.

Static Methods

class MathUtils:
    @staticmethod
    def add(a, b):
        return a + b
    
    @staticmethod
    def multiply(a, b):
        return a * b

# No need to instantiate
print(MathUtils.add(5, 3))  # 8
print(MathUtils.multiply(5, 3))  # 15

Class Methods

class Date:
    def __init__(self, year, month, day):
        self.year = year
        self.month = month
        self.day = day
    
    @classmethod
    def from_string(cls, date_string):
        year, month, day = map(int, date_string.split('-'))
        return cls(year, month, day)
    
    @classmethod
    def today(cls):
        import datetime
        today = datetime.date.today()
        return cls(today.year, today.month, today.day)

date1 = Date.from_string("2024-01-15")
date2 = Date.today()

Abstract Methods

from abc import ABC, abstractmethod

class Database(ABC):
    @abstractmethod
    def connect(self):
        pass
    
    @abstractmethod
    def query(self, sql):
        pass
    
    @abstractmethod
    def close(self):
        pass

class PostgreSQL(Database):
    def connect(self):
        print("Connecting to PostgreSQL")
    
    def query(self, sql):
        print(f"Executing: {sql}")
    
    def close(self):
        print("Closing PostgreSQL connection")

# db = Database()  # Error
db = PostgreSQL()
db.connect()

Method Resolution Order

class A:
    def method(self):
        print("A.method")

class B(A):
    def method(self):
        print("B.method")

class C(B):
    pass

c = C()
c.method()  # B.method
print(C.__mro__)  # (<class 'C'>, <class 'B'>, <class 'A'>, <class 'object'>)

Practice

Implement a factory pattern using class methods.

Advertisement

Need Expert Python Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement