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

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

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

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

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

دام های متغیر کلاس در مقابل نمونه

دسته بندی :اخبار سایت 27 فوریه 2023 علیرضا بابامرادی 271
دام های متغیر کلاس در مقابل نمونه

دام های متغیر کلاس در مقابل نمونه

علاوه بر ایجاد تمایز بین متدهای کلاس و نمونه متغیرهای نمونه روش‌ها، مدل شی پایتون نیز بین کلاس و این یک تمایز مهم است، اما همچنین باعث دردسر من شد به عنوان یک توسعه دهنده جدید پایتون. برای مدت طولانی من زمان را سرمایه گذاری نکردم آزمایشات اولیه OOP مملو از رفتارهای شگفت انگیز بود نیاز به درک این مفاهیم از پایه است. و بنابراین من اشکالات عجیب و غریب در این فصل ما هر گونه سردرگمی طولانی در مورد آن را برطرف خواهیم کرد همانطور که گفتم، دو نوع ویژگی داده در اشیاء پایتون وجود دارد: متغیرهای کلاس و متغیرهای نمونه این موضوع با چند مثال عملی متغیرهای کلاس در داخل تعریف کلاس اعلان می شوند (اما خارج از یک کلاس در عوض، متغیرهای کلاس محتویات خود را در کلاس ذخیره می کنند خود، و تمام اشیاء ایجاد شده از یک کلاس خاص به اشتراک دسترسی دارند مجموعه یکسانی از متغیرهای کلاس این به این معنی است که مثلاً اصلاح کردن یک متغیر کلاس بر تمام نمونه های شی به طور همزمان تأثیر می گذارد.

متغیرهای نمونه همیشه به یک نمونه شی خاص گره خورده اند.

محتویات آنها در کلاس ذخیره نمی شود، بلکه در هر شیء منفرد ایجاد شده از کلاس ذخیره می شود. بنابراین، محتویات یک متغیر نمونه کاملاً مستقل از یک نمونه شی به نمونه دیگر است. و بنابراین، تغییر یک متغیر نمونه تنها بر یک نمونه شی تأثیر می گذارد در یک زمان. از هر روش نمونه). آنها به هیچ نمونه خاصی وابسته نیستند بسیار خوب، این نسبتاً انتزاعی بود – وقت آن است که به کدی نگاه کنیم! بیایید شکست بخوریم از ماشین ها یا حیوانات خانگی برای نشان دادن نظر خود استفاده کنید، و شکستن آن سخت است آن سنت از “مثال سگ” قدیمی… بنا به دلایلی، همیشه آموزش های OOP یک سگ شاد به چه چیزی نیاز دارد؟ چهار پا و یک نام:num_legs = 4 # <- Class variable def __init__(self, name): class Dog: self.name = name # <- Instance variableبسیار خوب، این یک نمایش شی گرا از وضعیت سگی است که من توضیح دادم. ایجاد نمونه های جدید Dog همانطور که انتظار می رود کار می کند، و هر کدام یک متغیر نمونه به نام name دریافت می کنند:>>> jill = Dog(‘Jill’) >>> jack = Dog(‘Jack’) >>> jack.name, jill.name (‘Jack’, ‘Jill’)در مورد متغیرهای کلاس کمی انعطاف پذیری بیشتری وجود دارد. شما می تواند به متغیر کلاس num_legs مستقیماً روی هر سگ در حالت یا در خود کلاس دسترسی داشته باشد:(4, 4) >>> jack.num_legs, jill.num_legs >>> Dog.num_legs 4با این حال، اگر سعی کنید از طریق کلاس به یک متغیر نمونه دسترسی پیدا کنید، با یک AttributeError شکست خواهد خورد. متغیرهای نمونه خاص هستند اجرا می شود – آنها حتی در خود کلاس وجود ندارند. هر نمونه شی و زمانی که سازنده init ایجاد می شود این تمایز اصلی بین متغیرهای کلاس و نمونه است:AttributeError: >>> Dog.name “type object ‘Dog’ has no attribute ‘name'”

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

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

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

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

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

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

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

لینک کوتاه:
0