ارجاعات ضعیف در پایتون - قسمت دوم

..قسمت اول

class weakrf.ref(object[,callback])

این متد یک ارجاع ضعیف به شی را بر می گرداند.اگر مرجوع موجود باشد،با ارجاع می توان شی اصلی را بازیابی کرد.اگر مرجوع موجود نباشد ارجاع مقدار None را برمیگرداند.
برای یک شی می توان ارجاعات ضعیف متعددی ایحاد کرد.توابع کال بک ثبت شده برای هر ارجاع ضعیف به صورت جدید به قدیم فراخوانی می شوند(ابتدا کال بک های مربوط به ارجاعات ضعیف جدید فراخوانی می شوند)
اگر شی hashable باشد،ارجاعات ضعیف نیز hashable هستند و مقدار هش آن ها حتی بعد از حذف شی نیز باقی می ماند.

__callback__
صفت فقط خواندنی که کال بک همراه ارجاع ضعیف را برگشت می دهد.اگر کال بکی وجودنداشته باشد یا مرجوع وجود نداشته باشد، مقدار این صفت برابر None خواهد شد.این صفت در نسخه ی ۳.۴ اضافه شد.

مثال :

import weakref

s = {1, 2, 3}
wref = weakref.ref(s)
wref() # output -> {1, 2, 3}
# _ refere to {1, 2, 3}
del s
wref() # output -> {1, 2, 3}
# _ exist
del _
wref() # output -> None


ماژول weakref را ایمپورت کرده ایم

مجموعه ی s را با مقدار {3, 2, 1}  ساخته ایم

ارجاع ضعیف wref را می سازیم

مجموعه ی s را حذف می کنیم(در واقع ارجاع s به شی {3, 2, 1}  را از بین می بریم)

از شمارنده ی ارجاع یک واحد کم می شود

اما هنوز مقدار wref برابر {3, 2, 1} است چرا؟

چون متغیر _ به {3, 2, 1} اشاره دارد

اگر _ را حذف کنیم، مقدار wref نیز None خواهد شد.

در واقع وجود یا عدم وجود شی به ارجاع ضعیف بستگی ندارد.


ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی
طراح قالب : عرفـــ ـــان قدرت گرفته از بلاگ بیان