آدرس : تهران میدان فردوسی خیابان ایرانشهر بین سمیه و طالقانی مجتمع تجاری میلاد واحد 9

پشتیبانی 24 ساعته : 02188867940 – 09927674217

برای مشاهده لیست علاقه مندی ها وارد شوید!

مشاهده محصولات فروشگاه
0

هیچ محصولی در سبد خرید نیست.

یک مثال بدون سگ

دسته بندی :اخبار سایت 27 فوریه 2023 علیرضا بابامرادی 263
یک مثال بدون سگ

در حالی که هیچ سگی در ساخت این فصل آسیب ندیده است (همه چیز سرگرم کننده است و بازی تا زمانی که کسی جوانه بزند و یک جفت پا اضافی)، من می خواستم یک مثال عملی دیگر از کارهای مفیدی که می توانید انجام دهید به شما ارائه دهد برنامه های کاربردی برای متغیرهای کلاس با متغیرهای کلاس چیزی که کمی به دنیای واقعی نزدیکتر است پس اینجاست. کلاس CountedObject زیر چگونگی را پیگیری می کند ممکن است در واقع یک معیار عملکرد جالب برای دانستن باشد):class CountedObject: بارها در طول عمر یک برنامه نمونه سازی شد (که def __init__(self): num_instances = 0 self.__class__.num_instances += 1CountedObject یک متغیر کلاس num_instances را نگه می دارد که به عنوان کار می کند یک پیشخوان مشترک وقتی کلاس اعلام شد، شمارنده را مقداردهی اولیه می کند هر بار که یک نمونه جدید از این کلاس ایجاد می کنید، مقدار آن را افزایش می دهد هنگامی که سازنده init اجرا می شود، شمارنده به اشتراک گذاشته می شود:>>> CountedObject.num_instances به صفر می رسد و سپس آن را به حال خود رها می کند. >>> CountedObject().num_instances 1 >>> CountedObject().num_instances 2 >>> CountedObject().num_instances 3 >>> CountedObject.num_instances 3توجه کنید که چگونه این کد باید از یک حلقه کوچک عبور کند تا مطمئن شود متغیر شمارنده را در کلاس افزایش می دهد. این می شد 0 اگر سازنده را به صورت زیر می نوشتم به راحتی می توان مرتکب آن شد:class BuggyCountedObject: # WARNING: This implementation contains a bug def __init__(self): num_instances = 0 self.num_instances += 1 # !!!همانطور که خواهید دید، این پیاده سازی (بد) هرگز اشتراک گذاری را افزایش نمی دهد متغیر شمارنده:0 >>> BuggyCountedObject.num_instances >>> BuggyCountedObject().num_instances >>> BuggyCountedObject().num_instances 1 >>> BuggyCountedObject().num_instances 1 >>> BuggyCountedObject.num_instances 0من مطمئن هستم که اکنون می توانید ببینید کجا اشتباه کردم. این پیاده‌سازی (باگی) هرگز شمارنده مشترک را افزایش نمی‌دهد زیرا من ساخته‌ام اشتباهی که قبلا در مثال “جک سگ” توضیح دادم. این 1 پیاده سازی کار نمی کند زیرا من به طور تصادفی “سایه” کردم همین نام در سازنده متغیر کلاس num_instance با ایجاد یک متغیر نمونه از مقدار جدید شمارنده را به درستی محاسبه می کند (از 0 به 1 می رود) اما سپس نتیجه را در یک متغیر نمونه ذخیره می کند – که به معنای دیگر است نمونه های کلاس هرگز حتی مقدار شمارنده به روز شده را نمی بینند. همانطور که می بینید، این یک اشتباه کاملاً آسان است. ایده خوبی است که مراقب باشید و در هنگام برخورد با موارد اشتراکی محدوده خود را دوباره بررسی کنید وضعیت در یک کلاس تست‌های خودکار و بررسی‌های همتا کمک زیادی به این کار می‌کنند با این وجود، امیدوارم بتوانید دلیل و چگونگی متغیرهای کلاس را ببینید مشکلات آنها – می توانند در عمل ابزارهای مفیدی باشند. موفق باشید!که

علیرضا بابامرادی

راه آسان‌تری برای ارتباط با کاربران‌مان پیدا کرده‌ایم :) عضویت در کانال

مطالب زیر را حتما بخوانید:

قوانین ارسال دیدگاه در سایت

  • چنانچه دیدگاهی توهین آمیز باشد تایید نخواهد شد.
  • چنانچه دیدگاه شما جنبه ی تبلیغاتی داشته باشد تایید نخواهد شد.
  • چنانچه از لینک سایر وبسایت ها و یا وبسایت خود در دیدگاه استفاده کرده باشید تایید نخواهد شد.
  • چنانچه در دیدگاه خود از شماره تماس، ایمیل و آیدی تلگرام استفاده کرده باشید تایید نخواهد شد.
  • چنانچه دیدگاهی بی ارتباط با موضوع آموزش مطرح شود تایید نخواهد شد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

لینک کوتاه:
0