Dataclass ও Abstract Class

🐍 Python Advanced OOP: Dataclass ও Abstract Class

Python এর Advanced Object Oriented Programming (OOP) কনসেপ্টগুলো বুঝতে Dataclass এবং Abstract Class অত্যন্ত গুরুত্বপূর্ণ। এই টপিকগুলো মূলত Clean Code, Scalable Design এবং Professional Project Architecture তৈরিতে ব্যবহৃত হয়।


📌 ১. Dataclass কী?

Dataclass হলো Python এর একটি বিশেষ decorator (`@dataclass`) যা ব্যবহার করে খুব সহজে data-holding class তৈরি করা যায়।

✔ Dataclass কেন ব্যবহার করবেন?

  • Boilerplate code কমায়
  • Auto `__init__`, `__repr__`, `__eq__` তৈরি করে
  • Code হয় clean ও readable

🧪 Dataclass Example


from dataclasses import dataclass

@dataclass
class Student:
    name: str
    age: int
    course: str

s1 = Student("Rahul", 21, "Python")

print(s1)

# Output:
# Student(name='Rahul', age=21, course='Python')

এখানে লক্ষ্য করুন — আমাদের নিজে থেকে `__init__()` বা `__repr__()` লিখতে হয়নি। Dataclass সব নিজে থেকে তৈরি করেছে।

📌 Dataclass with Default Value & Method


from dataclasses import dataclass

@dataclass
class Product:
    name: str
    price: float
    in_stock: bool = True

    def discount_price(self):
        return self.price * 0.9

p1 = Product("Laptop", 50000)

print(p1.discount_price())

# Output:
# 45000.0

📌 ২. Abstract Class কী?

Abstract Class হলো এমন একটি class যা সরাসরি object তৈরি করতে দেয় না। এটি মূলত structure / blueprint হিসেবে কাজ করে।

✔ Abstract Class কেন দরকার?

  • Common structure enforce করতে
  • Large project এ standard maintain করতে
  • Loose coupling নিশ্চিত করতে

🧪 Abstract Class Example


from abc import ABC, abstractmethod

class Shape(ABC):

    @abstractmethod
    def area(self):
        pass

এখানে Shape একটি Abstract Class। এর object তৈরি করা যাবে না।

📌 Abstract Class Implement করা


class Rectangle(Shape):

    def __init__(self, width, height):
        self.width = width
        self.height = height

    def area(self):
        return self.width * self.height

r = Rectangle(10, 5)
print(r.area())

# Output:
# 50

এখানে `Rectangle` ক্লাসটি `Shape` কে inherit করেছে এবং বাধ্যতামূলকভাবে `area()` method implement করেছে।


📌 ৩. Dataclass + Abstract Class একসাথে ব্যবহার


from dataclasses import dataclass
from abc import ABC, abstractmethod

class Employee(ABC):

    @abstractmethod
    def salary(self):
        pass

@dataclass
class Developer(Employee):
    name: str
    base_salary: int

    def salary(self):
        return self.base_salary + 10000

dev = Developer("Amit", 40000)
print(dev.salary())

# Output:
# 50000

এই প্যাটার্নটি বাস্তব জীবনের Enterprise Project এ খুব বেশি ব্যবহৃত হয়।

✨ Summary (সংক্ষেপে)

  • Dataclass = Clean ও short data class
  • Abstract Class = Structure enforce করে
  • Large project এ দুটো একসাথে ব্যবহার হয়
  • Professional Python Architecture তৈরিতে অপরিহার্য
👼 Quiz
/

লোড হচ্ছে...

Interview Questions:

1. Dataclass কী?

Data ধারণ করার জন্য সহজ class।

2. Abstract Class কী?

যার object তৈরি করা যায় না।

3. abc module কেন ব্যবহৃত হয়?

Abstract class তৈরির জন্য।