সমস্যা
একটি অবজেক্ট ইনস্ট্যানশিয়েট করে একাধিক মডিউলে শেয়ার করতে চাইলে (সিঙ্গলটন প্যাটার্ন)।
পদ্ধতি ১: মডিউল অ্যাট্রিবিউট হিসেবে অ্যাসাইন
# main.py
import moduleB
myobj = MyClass()
moduleB.myobj = myobj # মডিউল B-এ গ্লোবাল হিসেবে যোগ
# moduleB.py
def use_obj():
print(myobj.value) # সরাসরি অ্যাক্সেস
পদ্ধতি ২: প্যারামিটার হিসেবে পাস করা (বेहतर)
# moduleB.py
def myfunc(obj):
print(obj.value)
# main.py
import moduleB
myobj = MyClass()
moduleB.myfunc(myobj) # নির্ভরতা স্পষ্ট
তুলনা
| পদ্ধতি | ফায়দা | নuksi |
|---|---|---|
| মডিউল অ্যাট্রিবিউট | সহজ, গ্লোবাল অ্যাক্সেস | হিডেন ডিপেন্ডেন্সি, টেস্টিং কঠিন |
| প্যারামিটার পাস | স্পষ্ট নির্ভরতা, টেস্টিং সহজ | প্রতিটি কলে পাস করতে হয় |