কম্পিউটার

আমি কিভাবে সঠিকভাবে একটি পাইথন বস্তু পরিষ্কার করতে পারি?


ক্লিনআপ গ্লোবালদের কোনোটিই নয়-এ সেট করার মাধ্যমে ঘটবে৷ অধিবেশন শেষে স্থানীয়রা আত্মহারা। Python দ্বারা ডাকা ফাংশন __del__ গ্লোবালকে None এ সেট করে।

নিম্নলিখিত কোডটি বিবেচনা করুন যেখানে প্রদত্ত শ্রেণির সমস্ত বস্তু পরিষ্কার করা আছে −

উদাহরণ

class Counter:
    Count = 0   # This is the count of objects of this class
    def __init__(self, name):
        self.name = name
        print name, 'created'
        Counter.Count += 1
    def __del__(self):
        print self.name, 'deleted'
        Counter.Count -= 1
        if Counter.Count == 0:
            print 'Last Counter object deleted'
        else:
            print Counter.Count, 'Counter objects remaining'
x = Counter("First")
del x

চূড়ান্ত ডেল ছাড়া, আপনি একটি ব্যতিক্রম পাবেন।

__del__ −

সম্পর্কিত পাইথন ডক্স থেকে

সতর্কতা:__del__() পদ্ধতিগুলি যে অনিশ্চিত পরিস্থিতিতে ব্যবহার করা হয় তার কারণে, তাদের কার্যকর করার সময় ঘটে যাওয়া ব্যতিক্রমগুলি উপেক্ষা করা হয়, এবং পরিবর্তে sys.stderr-এ একটি সতর্কতা প্রিন্ট করা হয়। এছাড়াও, যখন __del__() একটি মডিউল মুছে ফেলার প্রতিক্রিয়া হিসাবে আহ্বান করা হয় (যেমন, যখন প্রোগ্রামটি কার্যকর করা হয়), __del__() পদ্ধতি দ্বারা উল্লেখ করা অন্যান্য গ্লোবাল ইতিমধ্যেই মুছে ফেলা হতে পারে। এই কারণে, __del__() পদ্ধতিগুলি বাহ্যিক ইনভেরিয়েন্টগুলি বজায় রাখার জন্য প্রয়োজনীয় সর্বনিম্ন ন্যূনতম করা উচিত৷

del-কে স্পষ্টভাবে কল না করে, __del__ শুধুমাত্র প্রোগ্রামের শেষে কল করা হয়, __del__ ডাকার সময় কাউন্টার এবং/অথবা গণনা ইতিমধ্যেই GC-ed হয়ে থাকতে পারে (যে ক্রমে বস্তুগুলি সংগ্রহ করা হয় তা নির্ধারক নয়)। ব্যতিক্রম মানে কাউন্টার ইতিমধ্যে সংগ্রহ করা হয়েছে. আপনি __del__ এর সাথে বিশেষভাবে অভিনব কিছু করতে পারবেন না।

এখানে দুটি সম্ভাব্য সমাধান আছে।

  • একটি স্পষ্ট চূড়ান্ত পদ্ধতি ব্যবহার করুন, যেমন ফাইল অবজেক্টের জন্য close()।

  • দুর্বল রেফারেন্স ব্যবহার করুন।


  1. পাইথনের একটি তালিকা থেকে কিভাবে একটি বস্তু সরাতে?

  2. কিভাবে নেস্টেড পাইথন অভিধান তৈরি করবেন?

  3. কিভাবে অভিধানের মধ্যে একটি পাইথন অভিধান সংজ্ঞায়িত করবেন?

  4. পাইথন ফাংশন থেকে কিভাবে একটি json অবজেক্ট ফিরিয়ে আনবেন?