vars() ফাংশন পাইথন স্ট্যান্ডার্ড লাইব্রেরির প্রদত্ত ইনবিল্ট ফাংশনগুলোর সংকলন থেকে আসে। এটি একটি অ্যাসোসিয়েটেড অবজেক্টের __dict__ অ্যাট্রিবিউট কনসোলে রিটার্ন করে।
সিনট্যাক্স
vars(object)
রিটার্ন টাইপ
প্যারামিটার
vars() ফাংশন শুধু একটি প্যারামিটার নেয়। এটি একটি অবজেক্ট আর্গুমেন্ট হিসেবে নেয় যা যেকোনো মডিউল, ক্লাস বা __dict__ অ্যাট্রিবিউট থাকা যেকোনো অবজেক্ট হতে পারে।
এই প্যারামিটার অপশনাল। যদি ফাংশনটি বিনা প্যারামিটার ব্যবহার করা হয় তবে লোকাল সিম্বল টেবিল ধারণকারী একটি ডিকশনারি ডিসপ্লে হয়।
এক্সেপশন
যদি আর্গুমেন্ট অ্যাট্রিবিউটের সাথে মেলে না তবে TypeError এক্সেপশন উত্থাপন করে।
স্কোপ
vars() কোনো আর্গুমেন্ট না থাকলে locals() মেথডের মতো আচরণ করে। locals() মেথড বর্তমান লোকাল সিম্বল টেবিলের একটি ডিকশনারি মডিফাই করে রিটার্ন করে।
ওয়ার্কিং মেকানিজম
<class-name> __name__ অ্যাট্রিবিউটের সাথে অ্যাসোসিয়েটেড; বেস টাপল আইটেমাইজড হয় বেস ক্লাসের সাথে এবং __bases__ অ্যাট্রিবিউটের সাথে অ্যাসোসিয়েটেড হয় এবং ডিকশনারি হলো করেন্ট নেমস্পেস যেটিতে ক্লাস বডিতে থাকা ডেফিনিশন রয়েছে এবং এটি স্ট্যান্ডার্ড ডিকশনারি টাইপে কপি হয়ে __dict__ অ্যাট্রিবিউট হিসেবে ডিসপ্লে হয়।
উদাহরণ
class test:
def __init__(self, integer_1=555, integer_2=787):
self.integer_1 = integer_1
self.integer_2 = integer_2
obj_test = test()
print(vars(obj_test))আউটপুট
{'integer_1': 555, 'integer_2': 787}উদাহরণ
class sample:
company = "Tutorial's Point"
Number = 4
Topic = "Python 3.x."
obj = vars(sample)
print(obj)আউটপুট
{'__doc__': None, '__weakref__': , 'Topic': 'Python 3.x.', 'company': "Tutorial's Point", '__module__': '__main__', 'Number': 4, '__dict__': } উদাহরণ
class test():
# Python __repr__() ফাংশন অবজেক্টের রিপ্রেজেন্টেশন রিটার্ন করে।
# এতে যেকোনো বৈধ এক্সপ্রেশন থাকতে পারে যেমন টাপল, লিস্ট, ডিকশনারি, স্ট্রিং, সেট ইত্যাদি
def __repr__(self):
return "Tutorial's point"
def localvariables(self):
number = 4
return locals()
if __name__ == "__main__":
obj = test()
print(obj.localvariables())আউটপুট
{'self': "Tutorial's point", 'number': 4}ব্যাখ্যা
প্রথম উদাহরণ কোড ক্লাসের কনস্ট্রাক্টরের সাথে অ্যাসোসিয়েটেড __dict__ অ্যাট্রিবিউটের ব্যবহার দেখাচ্ছে ডিফল্ট ভ্যালু কনস্ট্রাক্টর মেথডে সেট করা।
দ্বিতীয় উদাহরণ কোড ক্লাসের সাথে অ্যাসোসিয়েটেড __dict__ অ্যাট্রিবিউটের ব্যবহার দেখাচ্ছে __doc__ অ্যাট্রিবিউট খালি থাকা সত্ত্বেও।
তৃতীয় উদাহরণ কোড ক্লাসের ভিতরে ইউজার-ডিফাইনড ফাংশনের সাথে অ্যাসোসিয়েটেড __dict__ অ্যাট্রিবিউটের ব্যবহার দেখাচ্ছে লোকাল স্কোপের ভেরিয়েবল সহ।
উপসংহার
এই আর্টিকেলে আমরা পাইথন ৩.x-এ vars ফাংশন বিভিন্ন কেসে বাস্তবায়ন শিখেছি। আপনি একই অ্যালগরিদম ব্যবহার করে vars ফাংশন যতক্ষণ প্রয়োজন ততক্ষণ ব্যবহার করতে পারেন।