কম্পিউটার টিউটোরিয়াল

পাইথন ক্লাসের মধ্যে সার্কুলার ডিপেন্ডেন্সি কীভাবে হ্যান্ডেল করবেন?


নিচের কোডটি পাইথন ক্লাসের মধ্যে সার্কুলার ডিপেন্ডেন্সি দেখাচ্ছে।

class P():
    q = Q().do_something();
    def do_something(self):
        pass
class Q():
    p = P().do_something();
    def do_something(self):
        pass

ক্লাসের ক্ষেত্রে, ফাংশনাদের처럼 নয়, ক্লাসের বডি ডেফিনিশন টাইমে এক্সিকিউট হয়। ক্লাস P ডিফাইন করতে হলে, আমাদের আসলে একটি Q মেথড কল করতে হয়, যা আমরা করতে পারি না কারণ ক্লাস Q এখনও ডিফাইন হয়নি।

এটি সমাধান করতে, আমরা প্রথমে ক্লাসগুলো ডিফাইন করি এবং তারপর প্রপার্টিগুলো যোগ করি -

class P(object):
    pass
class Q(object):
    pass
P.q = Q.do_something()
Q.p = P.do_something()

যদি প্রতিটি do_something কল অন্যটি ইতিমধ্যে এক্সিকিউট হয়েছে সেটি ধরে নেয়, তবে এটি কাজ করবে না। সমস্যাটি ফিক্স করতে আরও পরিবর্তন প্রয়োজন।

ক্লাসগুলোর এই সমস্যাগুলো আছে কারণ ক্লাস লেভেলের ডিরেক্টিভস (যেমন q = Q.do_something()) ক্লাস ডিফাইন করার সময় এক্সিকিউট হয়, ক্লাসের ইনস্ট্যান্স তৈরি করার সময় না।

আমরা একটি ক্লাসের ডেফিনিশন পরে সম্পূর্ণ করতে পারি, দুটি ক্লাস ডিফাইন হওয়ার পর। এটি প্রুফ করে যে পাইথন একটি ডাইনামিক ল্যাঙ্গুয়েজ।


  1. পাইথনে ক্লাস কীভাবে ডিফাইন করবেন?

  2. পাইথনে নেমস্পেস তৈরি করার উপায়

  3. পাইথনে এক্সসেপশন হ্যান্ডল করার পদ্ধতি

  4. পাইথনে লুপের ভিতরে এক্সসেপশন হ্যান্ডল করা