تقنية

webbrowser في بايثون: هل get يفتح صفحة؟

الكائن نفسه يعاد
مثال مؤلف. [1] [2]

نسجل كائنًا مؤلفًا ونراقب الاستدعاءات. [1] [2]

الخلاصة السريعة

في مثالنا لا؛ يعيد get الكائن المسجل نفسه. [1] [2]

  • الخرج: True ثم []. [1] [2]
  • instance=d يجعل المنشئ ctor غير مستدعى هنا. [1] [2]
  • لم نستدع Demo.open؛ لم نفتح صفحة أو متصفحًا. [1] [2]
  • بدون instance قد يستدعي get المنشئ عند الحاجة. [1] [2]
  • اختبرنا Windows و3.12.14 باسم صريح، لا المتصفح الافتراضي. [1] [2]

المثال

import webbrowser as w
calls=[]
def ctor(): calls.append("ctor"); return d
class Demo:
 def open(self,*args,**kwargs): calls.append("open")
d=Demo()
w.register("own",ctor,instance=d)
print(w.get("own") is d)
print(calls)

[1] [2]

الاختيار والأثر

عندما نقدم instance، يعاد كائننا؛ فحص is يختبر هويته. سجل calls فارغ: لا منشئ ولا open. إذا حذفنا instance=d في مثالنا، يصبح السجل ["ctor"] بعد get؛ يظل open غير مستدعى. [1] [2]

سجل الاستدعاءات فارغ
لا فتح في المثال. [1] [2]

الحدود

Demo كائن توضيحي، لا متصفحًا كاملًا. لم نمرر عنوانًا أو نفحص تحميل صفحة. لا نعمم خلو الأثر على منشئ مخصص آخر، ولا نغيّر متصفح نظام التشغيل. [1] [2]

المراجع

  1. Python: webbrowser.get/register
  2. CPython3.12.14: webbrowser.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.