কম্পিউটার

পাইথন দুর্বল রেফারেন্স


পাইথনে দুর্বল রেফারেন্স তৈরি করতে, আমাদের weakref ব্যবহার করতে হবে মডিউল বস্তুটিকে বাঁচিয়ে রাখার জন্য দুর্বলতা যথেষ্ট নয়। দুর্বল রেফারেন্সের একটি মৌলিক ব্যবহার হল একটি বড় বস্তুর জন্য ক্যাশে বা ম্যাপিং বাস্তবায়ন করা।

এই মডিউলটি ব্যবহার করতে, আমাদের এটি −

ব্যবহার করে আমদানি করা উচিত
import weakref

সমস্ত বস্তুকে দুর্বলভাবে উল্লেখ করা যায় না। কিছু অন্তর্নির্মিত প্রকার যেমন tuple বা int, দুর্বল রেফারেন্স সমর্থন করে না। দুর্বল রেফারেন্স সম্পর্কিত কিছু ক্লাস এবং পদ্ধতি রয়েছে।

ক্লাস weakref.ref(object[, callback])

এটি বস্তুর একটি দুর্বল রেফারেন্স ফিরিয়ে দেবে। যখন রেফারেন্ট এখনও জীবিত থাকে, তখন রেফারেন্স অবজেক্টকে কল করে প্রকৃত বস্তুটি পুনরুদ্ধার করা যেতে পারে, কিন্তু যখন প্রকৃত বস্তুটি উপস্থিত না থাকে, তখন এটি কোনটিই নয় ফিরে আসবে .

পদ্ধতি weakref.proxy(অবজেক্ট[, কলব্যাক])

এই পদ্ধতিটি বস্তুর জন্য একটি প্রক্সি ফেরত দিতে ব্যবহৃত হয়, যা দুর্বল রেফারেন্স ব্যবহার করছে। প্রত্যাবর্তিত বস্তুটি হয় প্রক্সি টাইপ বা কলেবলপ্রক্সি টাইপ হতে পারে৷

পদ্ধতি weakref.getweakrefcount(অবজেক্ট)

এই পদ্ধতিটি অবজেক্টের দুর্বল রেফারেন্স এবং প্রক্সির সংখ্যা ফেরাতে ব্যবহৃত হয়।

পদ্ধতি weakref.getweakrefs(অবজেক্ট)

এই পদ্ধতিটি দুর্বল রেফারেন্স এবং প্রক্সি অবজেক্টের একটি তালিকা ফেরত দিতে ব্যবহৃত হয়।

উদাহরণ কোড

import weakrefclass my_list(list):passnew_list =my_list('String') # একটি লিস্টপ্রিন্ট (new_list)weak_ref =weakref.ref(new_list)new_weak_list =weak_ref()new_proxy =weakref.proxy (new_proxy) সংজ্ঞায়িত করতে my_list ক্লাস ব্যবহার করুন। print(new_weak_list)print('প্রক্সি ব্যবহার করে অবজেক্ট:' + str(new_proxy)) যদি new_list হয় new_weak_list:print("একটি দুর্বল রেফারেন্স আছে")মুদ্রণ('দুর্বল রেফারেন্সের সংখ্যা:' + str(weakref.getweakrefcount) (new_list)))del new_list, new_weak_list #Delete both objectsprint("দুর্বল রেফারেন্স হল:" + str(weak_ref()))

আউটপুট

['S', 't', 'r', 'i', 'n', 'g']['S', 't', 'r', 'i', 'n', ' g']অবজেক্টটি প্রক্সি ব্যবহার করছে:['S', 't', 'r', 'i', 'n', 'g']একটি দুর্বল রেফারেন্স আছে দুর্বল রেফারেন্সের সংখ্যা:2 দুর্বল রেফারেন্স হল:কোনটিই 
  1. পাইথন অবজেক্ট তুলনা "হ্যাঁ" বনাম "=="

  2. কোন পাইথন অবজেক্ট ইন্সপেক্টর আছে?

  3. কিভাবে পাইথনে একটি বস্তু ধ্বংস করতে?

  4. পাইথনে একটি TimeTuple কি?