ভেবেছিলাম ভেরিয়েবলের মানগুলি পাস করার জন্য গ্লোবাল / মডিউল নেমস্পেসের পরিবর্তে ক্লাস নেমস্পেস ব্যবহার করে বৈশ্বিক ভেরিয়েবলগুলি ব্যবহারের কিছু অসুবিধা (যেমন উদাহরণস্বরূপ http://wiki.c2.com/?GlobalVariablesAreBad ) এড়ানো সম্ভব হবে কিনা ? । নিম্নলিখিত কোডটি নির্দেশ করে যে দুটি পদ্ধতি মূলত অভিন্ন। ক্লাসের নেমস্পেসগুলি নীচে বর্ণিত হিসাবে ব্যবহার করার ক্ষেত্রে সামান্য সুবিধা রয়েছে।
নিম্নলিখিত কোড টুকরাগুলি আরও দেখায় যে বৈশিষ্ট্য বা ভেরিয়েবলগুলি গ্লোবাল / মডিউল উভয় নেমস্পেস এবং শ্রেণীর নেমস্পেসে গতিশীলভাবে তৈরি এবং মোছা হতে পারে।
wall.py
# Note no definition of global variables
class router:
""" Empty class """
আমি এই মডিউলটিকে 'ওয়াল' বলি কারণ এটি ভেরিয়েবলগুলি বন্ধ করে দেওয়ার জন্য ব্যবহৃত হয়। এটি অস্থায়ীভাবে গ্লোবাল ভেরিয়েবল এবং শূন্য শ্রেণীর 'রাউটার' এর শ্রেণিবদ্ধ বৈশিষ্ট্যগুলি সংজ্ঞায়িত করতে একটি স্থান হিসাবে কাজ করবে।
source.py
import wall
def sourcefn():
msg = 'Hello world!'
wall.msg = msg
wall.router.msg = msg
এই মডিউলটি প্রাচীর আমদানি করে এবং একটি একক ফাংশন sourcefn
সংজ্ঞায়িত করে যা একটি বার্তা সংজ্ঞায়িত করে এবং দুটি পৃথক প্রক্রিয়া দ্বারা এটিকে নির্গত করে, একটি গ্লোবালের মাধ্যমে এবং একটি রাউটার ফাংশনের মাধ্যমে। লক্ষ্য করুন ভেরিয়েবল wall.msg
এবং wall.router.message
এখানে তাদের নিজ নিজ নামব্যবধান প্রথমবারের সংজ্ঞায়িত করা হয়।
dest.py
import wall
def destfn():
if hasattr(wall, 'msg'):
print 'global: ' + wall.msg
del wall.msg
else:
print 'global: ' + 'no message'
if hasattr(wall.router, 'msg'):
print 'router: ' + wall.router.msg
del wall.router.msg
else:
print 'router: ' + 'no message'
এই মডিউলটি এমন একটি ফাংশন সংজ্ঞায়িত করে destfn
যা উত্স দ্বারা প্রেরিত বার্তাগুলি গ্রহণ করতে দুটি পৃথক প্রক্রিয়া ব্যবহার করে। এটি সম্ভাব্যতার জন্য অনুমতি দেয় যে চলক 'msg' উপস্থিত থাকতে পারে না। destfn
ভেরিয়েবলগুলি প্রদর্শিত হওয়ার পরে তা মুছে দেয়।
main.py
import source, dest
source.sourcefn()
dest.destfn() # variables deleted after this call
dest.destfn()
এই মডিউলটি পূর্বনির্ধারিত ফাংশনগুলিকে ক্রমানুসারে কল করে। প্রথম কল করার পর dest.destfn
ভেরিয়েবল wall.msg
এবং wall.router.msg
এখন আর বিদ্যমান নেই।
প্রোগ্রাম থেকে আউটপুট হয়:
গ্লোবাল: হ্যালো ওয়ার্ল্ড!
রাউটার: হ্যালো ওয়ার্ল্ড!
গ্লোবাল: কোনও বার্তা
রাউটার: কোনও বার্তা নেই
উপরের কোডের টুকরোগুলি দেখায় যে মডিউল / গ্লোবাল এবং শ্রেণি / শ্রেণি পরিবর্তনশীল প্রক্রিয়াগুলি মূলত অভিন্ন।
যদি প্রচুর ভেরিয়েবলগুলি ভাগ করে নেওয়া হয় তবে বেশ কয়েকটি ওয়াল-টাইপ মডিউল, যেমন: ওয়াল 1, ওয়াল 2 ইত্যাদি ব্যবহার করে বা একক ফাইলে বেশ কয়েকটি রাউটার-ধরণের ক্লাস নির্ধারণ করে নেমস্পেস দূষণ পরিচালনা করা যায় can পরবর্তীটি সামান্য পরিপাটিযুক্ত, সুতরাং সম্ভবত শ্রেণি-পরিবর্তনশীল প্রক্রিয়াটি ব্যবহারের জন্য একটি প্রান্তিক সুবিধা উপস্থাপন করে।