প্রবন্ধ

পাইথন এবং উন্নত পদ্ধতি, ভাল প্রোগ্রামিংয়ের জন্য ডান্ডার ফাংশন

পাইথন একটি চমত্কার প্রোগ্রামিং ভাষা, এবং এটি দ্বারা প্রমাণিত GitHub, এছাড়াও 2022 সালে দ্বিতীয় সর্বাধিক জনপ্রিয় ভাষা।

পাইথনের সবচেয়ে আকর্ষণীয় সুবিধা হল প্রোগ্রামারদের বিশাল সম্প্রদায়।

মনে হচ্ছে পাইথনের যেকোনো ব্যবহারের ক্ষেত্রে একটি প্যাকেজ রয়েছে।

পাইথন প্রোগ্রামিংয়ের বিশাল বিশ্বে, এমন একগুচ্ছ বৈশিষ্ট্য রয়েছে যা প্রায়শই নতুনদের নজরে পড়ে না, তবুও ভাষার ইকোসিস্টেমে উল্লেখযোগ্য গুরুত্ব রয়েছে।

ম্যাজিক পদ্ধতি হল পূর্ব পদ্ধতির একটি সেটdefiপাইথনে নাইটিস যা বিশেষ সিনট্যাকটিক বৈশিষ্ট্য প্রদান করে। তারা সহজে শুরু এবং শেষে তাদের ডবল ড্যাশ দ্বারা স্বীকৃত হয়, মত __init__, __call__, __len__ … ইত্যাদি

জাদুকরী পদ্ধতি

ম্যাজিক পদ্ধতিগুলি কাস্টম অবজেক্টকে বিল্ট-ইন পাইথন প্রকারের মতো আচরণ করার অনুমতি দেয়।

এই নিবন্ধে, আমরা শক্তিশালী ডান্ডার ফাংশনগুলিতে ফোকাস করব। আমরা তাদের উদ্দেশ্য অন্বেষণ করব এবং তাদের ব্যবহার নিয়ে আলোচনা করব।

আপনি পাইথন নবাগত বা একজন অভিজ্ঞ প্রোগ্রামার হোন না কেন, এই নিবন্ধটির লক্ষ্য আপনাকে ডান্ডার ফাংশনগুলির একটি বিস্তৃত বোধগম্যতা প্রদান করা, আপনার পাইথন কোডিং অভিজ্ঞতাকে আরও দক্ষ এবং আনন্দদায়ক করে তুলবে।

মনে রাখবেন, পাইথনের জাদু শুধুমাত্র এর সরলতা এবং বহুমুখিতাই নয়, ডান্ডার ফাংশনের মতো শক্তিশালী বৈশিষ্ট্যগুলির মধ্যেও রয়েছে।

__init__

সম্ভবত সব থেকে মৌলিক ডন্ডার ফাংশন. এটি এমন একটি ম্যাজিক পদ্ধতি যা পাইথন স্বয়ংক্রিয়ভাবে কল করে যখনই আমরা একটি নতুন অবজেক্ট তৈরি করি (অথবা নাম অনুসারে শুরু হয়)।__init__

ক্লাস পিজা:
def __init__(স্ব, আকার, টপিংস):
self.size = আকার
self.toppings = toppings

# এবার একটা পিজ্জা তৈরি করি
my_pizza = পিজ্জা('বড়', ['পেপারোনি', 'মাশরুম'])

print(my_pizza.size) # এটি প্রিন্ট করবে: বড়
print(my_pizza.toppings) # এটি প্রিন্ট করবে: ['pepperoni', 'mashrooms']

এই উদাহরণে, পিজা নামে একটি ক্লাস তৈরি করা হয়েছে। আমরা আমাদের __init__ ফাংশন সেট আপ করি শুরু করার সময় নির্দিষ্ট করার পরামিতিগুলি অন্তর্ভুক্ত করার জন্য এবং সেগুলিকে আমাদের কাস্টম অবজেক্টের বৈশিষ্ট্য হিসাবে সেট করি।

এখানে, এটি ক্লাসের উদাহরণ উপস্থাপন করতে ব্যবহৃত হয়। তাই যখন আমরা self.size = size লিখি, তখন আমরা বলি, "আরে, এই পিৎজা বস্তুটির একটি বৈশিষ্ট্যের আকার আছে size, এবং আমি বস্তুটি তৈরি করার সময় আমি যে আকার দিয়েছি তা হতে চাই”।

__str__ এবং __repr__

__Str__

এটি পাইথনের জাদু পদ্ধতি যা আমাদের করতে দেয় defiআমাদের কাস্টম আইটেম জন্য একটি বিবরণ নিশ.

আপনি যখন একটি বস্তু মুদ্রণ বা ব্যবহার করে একটি স্ট্রিং রূপান্তরিত str(), পাইথন আছে কিনা চেক করুন defiআমি একটি পদ্ধতি নিয়ে এসেছি __str__ যে বস্তুর ক্লাস জন্য.

যদি তাই হয়, বস্তুটিকে একটি স্ট্রিং এ রূপান্তর করতে সেই পদ্ধতিটি ব্যবহার করুন।

আমরা একটি ফাংশন অন্তর্ভুক্ত করার জন্য আমাদের পিজা উদাহরণ প্রসারিত করতে পারি __str__ নিম্নরূপ:

ক্লাস পিজা: def __init__(self, size, toppings): self.size = size self.toppings = toppings def __str__(self): {', '.join(self.toppings) সহ f"A {self.size} পিজা ফেরত দিন )}" my_pizza = Pizza('large', ['pepperoni', 'mashrooms']) print(my_pizza) # এটি প্রিন্ট করবে: পেপারোনি, মাশরুম সহ একটি বড় পিজ্জা
__repr__

__str__ ফাংশনটি একটি বস্তুর বৈশিষ্ট্য বর্ণনা করার একটি অনানুষ্ঠানিক উপায়। অন্যদিকে, __repr__ কাস্টম অবজেক্টের আরও আনুষ্ঠানিক, বিস্তারিত এবং দ্ব্যর্থহীন বর্ণনা প্রদান করতে ব্যবহৃত হয়।

ডাকলে repr() একটি অবজেক্টে বা আপনি কনসোলে অবজেক্টের নাম টাইপ করুন, পাইথন একটি পদ্ধতি সন্ধান করবে __repr__.

Se __str__ এইটা না definite, Python ব্যবহার করবে __repr__ একটি ব্যাকআপ হিসাবে যখন বস্তু মুদ্রণ বা একটি স্ট্রিং রূপান্তর করার চেষ্টা করে। তাই এটা প্রায়ই একটি ভাল ধারণা defiঅন্তত শেষ __repr__, এমনকি যদি আপনি না করেন defiবাইরে আসো __str__.

এখানে আমরা কিভাবে পারে defiশেষ __repr__ আমাদের পিজ্জা উদাহরণের জন্য:

ক্লাস পিজা:
def __init__(স্ব, আকার, টপিংস):
self.size = আকার
self.toppings = toppings

def __repr__(স্বয়ং):
ফেরত দিন f"Pizza('{self.size}', {self.toppings})"

my_pizza = পিজ্জা('বড়', ['পেপারোনি', 'মাশরুম'])
print(repr(my_pizza)) # এটি প্রিন্ট করবে: পিৎজা('বড়', ['পেপারোনি', 'মাশরুম'])

__repr__ আপনাকে একটি স্ট্রিং দেয় যা আপনি পিৎজা অবজেক্ট পুনরায় তৈরি করতে পাইথন কমান্ড হিসাবে চালাতে পারেন __str__ আপনাকে আরও মানবিক বর্ণনা দেয়। আমি আশা করি এটি আপনাকে এই ডান্ডার পদ্ধতিগুলিকে একটু ভাল চিবিয়ে সাহায্য করবে!

__যোগ করুন__

পাইথনে, আমরা সবাই জানি যে অপারেটর ব্যবহার করে সংখ্যা যোগ করা সম্ভব +, আসো 3 + 5.

কিন্তু যদি আমরা কিছু কাস্টম বস্তুর উদাহরণ যোগ করতে চাই?

ডান্ডার ফাংশন __add__ এটা আমাদের শুধু যে করতে অনুমতি দেয়. এটা আমাদের ক্ষমতা দেয় defiঅপারেটরের আচরণ নিশ + আমাদের ব্যক্তিগতকৃত আইটেমগুলিতে।

ধারাবাহিকতার স্বার্থে, ধরা যাক আমরা চাই defiএর আচরণ শেষ করুন + আমাদের পিজা উদাহরণে। ধরা যাক যে যখনই আমরা দুই বা ততোধিক পিজ্জা একসাথে যোগ করি, এটি স্বয়ংক্রিয়ভাবে তাদের সমস্ত টপিং একত্রিত করবে। এটি দেখতে কেমন হতে পারে তা এখানে:

ক্লাস পিজা:
def __init__(স্ব, আকার, টপিংস):
self.size = আকার
self.toppings = toppings

def __add__(স্বয়ং, অন্যান্য):
ইন্সট্যান্স না হলে (অন্যান্য, পিৎজা):
TypeError বাড়াতে ("আপনি শুধুমাত্র অন্য পিজা যোগ করতে পারেন!")
new_toppings = self.toppings + other.toppings
রিটার্ন পিজা (self.size, new_toppings)

# আসুন দুটি পিজা তৈরি করি
pizza1 = পিজ্জা ('বড়', ['পেপারোনি', 'মাশরুম'])
pizza2 = Pizza('বড়', ['অলিভ', 'আনারস'])

# এবং এখন তাদের "যোগ" করা যাক
combined_pizza = pizza1 + pizza2

print(combined_pizza.toppings) # এটি প্রিন্ট করবে: ['পেপারোনি', 'মাশরুম', 'অলিভ', 'আনারস']

একইভাবে ডান্ডার __add__, আমরাও পারি defiঅন্যান্য গাণিতিক ফাংশন যেমন শেষ করুন __sub__ (অপারেটর ব্যবহার করে বিয়োগ করে -) ই __mul__ (অপারেটর ব্যবহার করে গুণের জন্য *).

__লেন__

এই ডান্ডার পদ্ধতি আমাদের অনুমতি দেয় defiকি ফাংশন শেষ len() আমাদের কাস্টমাইজড আইটেম জন্য ফিরে আসতে হবে.

পাইথন ব্যবহার করে len() একটি তালিকা বা স্ট্রিং যেমন একটি ডেটা কাঠামোর দৈর্ঘ্য বা আকার পেতে।

আমাদের উদাহরণের পরিপ্রেক্ষিতে, আমরা বলতে পারি যে একটি পিজ্জার "দৈর্ঘ্য" হল এটিতে থাকা টপিংয়ের সংখ্যা। আমরা কীভাবে এটি বাস্তবায়ন করতে পারি তা এখানে:

ক্লাস পিজা:
def __init__(স্ব, আকার, টপিংস):
self.size = আকার
self.toppings = toppings

def __len__(স্বয়ং):
রিটার্ন লেন (self.toppings)

# আসুন একটি পিজা তৈরি করি
my_pizza = পিজ্জা ('বড়', ['পেপারোনি', 'মাশরুম', 'জলপাই'])

print(len(my_pizza)) # এটি প্রিন্ট করবে: 3

__len__ পদ্ধতিতে, আমরা শুধুমাত্র তালিকার দৈর্ঘ্য ফিরিয়ে দিই toppings। এখন, len(my_pizza) এটা কত টপিং আছে তা আমাদের বলে দেবে my_pizza.

__ প্রক্রিয়া __

এই ডান্ডার পদ্ধতি অবজেক্টগুলিকে পুনরাবৃত্তিযোগ্য হতে দেয়, অর্থাৎ এটি লুপের জন্য ব্যবহার করা যেতে পারে।

এটি করতে, আমাদেরও করতে হবে defiফাংশন শেষ করুন __next__, এই জন্য ব্যবহৃত হয় definish আচরণ যা পুনরাবৃত্তির পরবর্তী মান ফেরত দিতে হবে। এটি ইভেন্টে পুনরাবৃত্তিযোগ্য সংকেত দেওয়া উচিত যে ক্রমটিতে আর কোনও উপাদান নেই। আমরা সাধারণত একটি ব্যতিক্রম নিক্ষেপ করে এটি অর্জন করি StopIteration.

আমাদের পিজ্জা উদাহরণের জন্য, ধরা যাক আমরা টপিংগুলি পুনরাবৃত্তি করতে চাই। আমরা আমাদের পিজা ক্লাস পুনরাবৃত্তিযোগ্য করতে পারে defiNendo একটি পদ্ধতি __iter__:

ক্লাস পিজা:
def __init__(স্ব, আকার, টপিংস):
self.size = আকার
self.toppings = toppings

def __iter__(self):
self.n = 0
নিজেকে ফিরে

def __next__(self):
যদি self.n < len(self.toppings):
ফলাফল = self.toppings[self.n]
self.n += 1
ফেরত ফলাফল
অন্য:
StopIteration বাড়ান

# আসুন একটি পিজা তৈরি করি
my_pizza = পিজ্জা ('বড়', ['পেপারোনি', 'মাশরুম', 'জলপাই'])

# এবং এখন এর এটি উপর পুনরাবৃত্তি করা যাক
my_pizza এ টপ করার জন্য:
মুদ্রণ (টপিং)

এই ক্ষেত্রে, লুপ কল জন্য __iter__, যা একটি কাউন্টার আরম্ভ করে (self.n) এবং পিজ্জা বস্তুটি নিজেই ফেরত দেয় (self).

তারপর, লুপ কল জন্য __next__ পালাক্রমে প্রতিটি টপিং পেতে.

যখন __next__ সব মশলা ফিরে এসেছে, StopIteration এটি একটি ব্যতিক্রম নিক্ষেপ করে এবং for loop এখন জানে যে এখানে আর কোন টপিং নেই এবং তাই পুনরাবৃত্তি প্রক্রিয়াটি বাতিল হবে।

Ercole Palmeri

উদ্ভাবন নিউজলেটার
উদ্ভাবনের সবচেয়ে গুরুত্বপূর্ণ খবর মিস করবেন না। ইমেল দ্বারা তাদের পেতে সাইন আপ করুন.
ট্যাগ্স: পাইথন

সাম্প্রতিক নিবন্ধ

ক্যাটানিয়া পলিক্লিনিকে অ্যাপল দর্শকের সাথে অগমেন্টেড রিয়েলিটিতে উদ্ভাবনী হস্তক্ষেপ

অ্যাপল ভিশন প্রো কমার্শিয়াল ভিউয়ার ব্যবহার করে ক্যাটানিয়া পলিক্লিনিকে একটি চক্ষুরোগ অপারেশন করা হয়েছিল...

3 মে 2024

শিশুদের জন্য রঙিন পৃষ্ঠাগুলির উপকারিতা - সব বয়সের জন্য একটি জাদু বিশ্ব

রঙের মাধ্যমে সূক্ষ্ম মোটর দক্ষতার বিকাশ শিশুদের লেখার মতো জটিল দক্ষতার জন্য প্রস্তুত করে। রঙ…

2 মে 2024

ভবিষ্যত এখানে: শিপিং শিল্প কীভাবে বৈশ্বিক অর্থনীতিতে বিপ্লব ঘটাচ্ছে

নৌ সেক্টর একটি সত্যিকারের বৈশ্বিক অর্থনৈতিক শক্তি, যা 150 বিলিয়ন বাজারের দিকে নেভিগেট করেছে...

1 মে 2024

প্রকাশকরা এবং OpenAI কৃত্রিম বুদ্ধিমত্তা দ্বারা প্রক্রিয়াকৃত তথ্যের প্রবাহ নিয়ন্ত্রণ করতে চুক্তি স্বাক্ষর করে

গত সোমবার, ফাইন্যান্সিয়াল টাইমস ওপেনএআই-এর সাথে একটি চুক্তি ঘোষণা করেছে। FT তার বিশ্বমানের সাংবাদিকতার লাইসেন্স দেয়...

30 এপ্রিল 2024

আপনার ভাষায় উদ্ভাবন পড়ুন

উদ্ভাবন নিউজলেটার
উদ্ভাবনের সবচেয়ে গুরুত্বপূর্ণ খবর মিস করবেন না। ইমেল দ্বারা তাদের পেতে সাইন আপ করুন.

আমাদের অনুসরণ