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

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

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

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

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

زیرخط تکی دنباله دار: “var_” در پایتون

دسته بندی :اخبار سایت 13 فوریه 2023 علیرضا بابامرادی 273

عنوان محتوای دوم : زیرخط تکی دنباله دار: “var_” در پایتون

گاهی اوقات مناسب ترین نام برای یک متغیر قبلاً توسط a گرفته می شود
کلمه کلیدی در زبان پایتون بنابراین، نام هایی مانند class یا def
نمی توان به عنوان نام متغیر در پایتون استفاده کرد. در این صورت می توانید
برای از بین بردن تعارض نامگذاری، یک خط زیر اضافه کنید:

def make_object(name, class):
SyntaxError: “invalid syntax”
def make_object(name, class_):
… pass
به طور خلاصه، یک زیرخط انتهایی منفرد (postfix) برای جلوگیری از تداخل نام‌گذاری با کلمات کلیدی پایتون استفاده می‌شود. این کنوانسیون
در PEP 8 تعریف و توضیح داده شده است.

دو خط زیر خط پیشرو: “var” الگوهای نامگذاری که تاکنون پوشش داده ایم معنای خود را از آنها دریافت می کنند فقط کنوانسیون های مورد توافق با ویژگی‌های کلاس پایتون (قابلیت‌ها و متدهای متغیر) که با زیرخط دوتایی شروع می‌شوند، همه چیز a کمی متفاوت یک پیشوند دوتایی باعث می شود مفسر پایتون بازنویسی کند نام ویژگی به منظور جلوگیری از تداخل نامگذاری در زیر کلاسها. به این حالت نامشخصی نیز می گویند – مترجم نام را تغییر می دهد از متغیر به گونه ای که ایجاد تصادم را سخت تر می کند کلاس بعدا تمدید میشه می دانم که این به نظر انتزاعی است. به همین دلیل این کمی را جمع کردم نمونه کدی که می توانیم برای آزمایش استفاده کنیم: class Test: def __init(self):
self.foo = 11
self._bar = 23
self.__baz = 23
بیایید با استفاده از dir() داخلی به ویژگی های این شی نگاه کنیم.

t = Test()
dir(t)
[‘_Test__baz’, ‘class‘, ‘delattr‘, ‘dict‘,
dir‘, ‘doc‘, ‘eq‘, ‘format‘, ‘ge‘,
getattribute‘, ‘gt‘, ‘hash‘, ‘init‘,
le‘, ‘lt‘, ‘module‘, ‘ne‘, ‘new‘,
reduce‘, ‘reduce_ex‘, ‘repr‘,
setattr‘, ‘sizeof‘, ‘str‘,
subclasshook‘, ‘weakref‘, ‘_bar’, ‘foo’]

این یک لیست با ویژگی های شی به ما می دهد. بیایید این لیست را بگیریم و
به دنبال نام متغیر اصلی foo، _bar، و baz باشید. قول میدهم متوجه تغییرات جالبی خواهید شد اول از همه، متغیر self.foo بدون تغییر به عنوان foo در به نظر می رسد لیست ویژگی ها در مرحله بعد، self._bar به همین صورت عمل می کند – در کلاس نشان داده می شود به عنوان _bar. همانطور که قبلاً گفتم، زیر خط اصلی فقط یک قرارداد است در این مورد – یک اشاره برای برنامه نویس. با این حال، با self.__baz همه چیز کمی متفاوت به نظر می رسد. وقتی تو __baz را در آن لیست جستجو کنید، خواهید دید که هیچ متغیری با آن وجود ندارد آن نام پس چی شد باز؟
اگر دقت کنید، می‌بینید که یک ویژگی به نام _Test__baz وجود دارد
روی این شی این همان نامی است که مفسر پایتون درگیر آن است
اعمال میشود. این کار را برای محافظت از متغیر از رد شدن در داخل انجام می دهد.

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

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

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

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

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

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

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

لینک کوتاه:
0