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 তৈরিতে অপরিহার্য
লোড হচ্ছে...
1. Dataclass কী?
Data ধারণ করার জন্য সহজ class।
2. Abstract Class কী?
যার object তৈরি করা যায় না।
3. abc module কেন ব্যবহৃত হয়?
Abstract class তৈরির জন্য।