ডেটাক্লাসগুলি হল একটি নতুন মডিউল যা পাইথনের স্ট্যান্ডার্ড লাইব্রেরিতে 3.7 সংস্করণ থেকে যুক্ত করা হয়েছে। এটি @dataclass ডেকোরেটরকে সংজ্ঞায়িত করে যা স্বয়ংক্রিয়ভাবে কনস্ট্রাক্টর ম্যাজিক পদ্ধতি __init__(), স্ট্রিং রিপ্রেজেন্টেশন পদ্ধতি __repr__(), __eq__() পদ্ধতি যা ব্যবহারকারীর সংজ্ঞায়িত ক্লাসের জন্য ==অপারেটর (এবং আরও কিছু) ওভারলোড করে।
ডেটাক্লাস ডেকোরেটরের নিম্নলিখিত স্বাক্ষর রয়েছে
dataclass(init=True, repr=True, eq=True, order=False, unsafe_hash=False, frozen=False)
সমস্ত আর্গুমেন্ট একটি বুলিয়ান মান নেয় যা নির্দেশ করে যে একটি সংশ্লিষ্ট জাদু পদ্ধতি বা পদ্ধতিগুলি স্বয়ংক্রিয়ভাবে তৈরি হবে কি না৷
'init' যুক্তিটি ডিফল্টরূপে সত্য। এটি ক্লাসের জন্য স্বয়ংক্রিয়ভাবে __init__() পদ্ধতি তৈরি করবে।
ডাটাক্লাস ডেকোরেটর ব্যবহার করে স্টুডেন্ট ক্লাসকে নিম্নরূপ সংজ্ঞায়িত করা যাক
from dataclasses import dataclass @dataclass class Student(object): name : str age : int percent : float
স্বয়ংক্রিয়ভাবে তৈরি __init__() পদ্ধতিটি হল
এর মতdef __init__(self, name: str, age: int, percent: float): self.name = name self.age = age self.percent = percent
যদি ক্লাসটি স্পষ্টভাবে __init__() পদ্ধতিকে সংজ্ঞায়িত করে, তাহলে init প্যারামিটার উপেক্ষা করা হয়।
রিপ্র আর্গুমেন্ট ডিফল্টরূপেও সত্য। তাই __repr__() পদ্ধতি স্বয়ংক্রিয়ভাবে তৈরি হবে। __repr__() বস্তুর একটি আনুষ্ঠানিক স্ট্রিং উপস্থাপনা। যদি ক্লাসটি ইতিমধ্যেই __repr__() সংজ্ঞায়িত করে, তাহলে এই প্যারামিটারটি উপেক্ষা করা হবে।
eq যুক্তিটি ডিফল্টভাবে সত্য। এটি স্বয়ংক্রিয়ভাবে __eq__() পদ্ধতি তৈরি করবে। সমান তুলনা অপারেটর (==) এর প্রতিক্রিয়া হিসাবে এই পদ্ধতিটি বলা হয়। আবার, যদি ক্লাসটি ইতিমধ্যেই __eq__() সংজ্ঞায়িত করে, তাহলে এই প্যারামিটারটি উপেক্ষা করা হবে।
যদি 'অর্ডার' প্যারামিটারটি সত্য হয় (ডিফল্টটি মিথ্যা), তুলনা করার জন্য জাদু পদ্ধতি, __lt__(), __le__(), __gt__(), এবং __ge__() পদ্ধতিগুলি স্বয়ংক্রিয়ভাবে তৈরি হবে, তারা তুলনা অপারেটরগুলি প্রয়োগ করে <<=> উত্তর>=যথাক্রমে। যদি ক্রম সত্য হয় এবং eq মিথ্যা হয়, একটি ValueError উত্থাপিত হয়। যদি ক্লাসটি ইতিমধ্যেই এই পদ্ধতিগুলির মধ্যে কোনটি সংজ্ঞায়িত করে তবে এটি TypeError-এ পরিণত হয়৷
অসুরক্ষিত_হ্যাশ আর্গুমেন্ট যদি মিথ্যা (ডিফল্ট), eq এবং হিমায়িত কিভাবে সেট করা হয় সে অনুযায়ী একটি __hash__() পদ্ধতি তৈরি করা হয়।
হিমায়িত যুক্তি:সত্য হলে (ডিফল্টটি মিথ্যা), শুধুমাত্র পঠনযোগ্য হিমায়িত দৃষ্টান্ত অনুকরণ করে।
>>> from data_class import Student >>> s1=Student('Naveen', 21, 50.50) >>> s2=Student('Mangesh', 20, 50.00) >>> s1==s2 False
asdict()
এই ফাংশন ক্লাস ইনস্ট্যান্সকে ডিকশনারি অবজেক্টে রূপান্তর করে।
>>> import dataclasses >>> dataclasses.asdict(s1) {'name': 'Naveen', 'age': 21, 'percent': 50.5}
চমৎকার()
এই ফাংশনটি ক্লাস ইনস্ট্যান্সকে একটি টুপল অবজেক্টে রূপান্তর করে।
>>> dataclasses.astuple(s2) ('Mahesh', 20, 50.0)
make_dataclass()
এই ফাংশনটি ফিল্ড আর্গুমেন্ট হিসাবে দেওয়া টিপলের তালিকা থেকে একটি নতুন ডেটাক্লাস তৈরি করে।
>>> NewClass=dataclasses.make_dataclass('NewClass', [('x',int),('y',float)]) >>> n = NewClass(10,20) >>> n NewClass(x=10, y=20)