ویدیو ارزیابی class variableهای پایتون

August 2022

دانلود ویدیو

اگر دانلود ویدیو شروع نشد، روی ویدیو راست کلیک کرده و گزینه Save Video As را انتخاب کنید.

در این ویدیو یک نکته مهم در رابطه با کلاس‌های پایتون میبینید. class variableهای پایتون در زمان ایجاد شدن یا import شدن ارزیابی خواهند شد. به این معنی که اگر شما کلاسی را فقط ایجاد کنید و از آن هیچ استفاده نکنید class variableهای آن اجرا خواهند شد و اگر شما در class variableهایتان کار سنگینی انجام داده باشید در سرعت تاثیر منفی خواهد گذاشت.

ارسال نظر

تلاش میکنم سوالات شما را در کمتر از یک روز پاسخ بدم

AMIR

September 2022

سلام.
به نظر من این قسمت که گفتیدclass variable ها در زمان import کردن یا ساختن کلاس ها ارزیابی(evaluate) میشن تا حدی نیاز با اصلاح در جمله بندی دارد و بهتر بود می گفتید که:

زمانی کلاسی را می سازیم و از اون کلاس در جایی استفاده می کنیم
(حالا می خواهد جایی ایمورت بشه یا توی همون ماژول اصلی فقط ران بشه)
تک تک خطوط اون کلاس ارزیابی میشه(evaluate) میشه ؛
مثلا توی کد زیر:

:class Person
x= input('your name ')
print(1)
...

زمانی که از این کلاس جایی استفاده بشه
مفسر پایتون میاد میگه کلاسی به اسم person ساختی و من حالا میام و تک تک خطوط این کلاس را ارزیابی می کنم.
خط اول گفتی یه داده ای از کاربر بگیر و 'بعد' اون را در متغیر x
ذخیره کن و در خطوط بعد یه پیامی را چاب کن.
*************
و نه به صرف اینکه چون متغیر هست آن را ارزیابی می کنم و از ارزیابی سایر خطوطی که class variable نیستند خودداری می کنم.

باز هم از وقتی که برای تهیه این دوره ها صرف می کنید ممنون

پاسخ به نظر


امیرحسین بیگدلو

September 2022

سلام
پایتون در زمان اجرا شدن تمام خطوط رو یکبار فقط میخونه. اماclass variable ها رو اجرا میکنه.
خوندن کد با اجرا کردنشون فرق میکنه.
به هر حال من مشکلی داخل ویدیو نمیبینم. شاید هم منظور شما رو متوجه نشدم :/


AMIR

September 2022

همانطور که گفتید پایتون تمامی خطوط یک کلاس را فقط می خونه;
اما منظورم اینکه بعد از خوندن اون خط اگه دستور اجرایی باشه مثل print یا مثل ایجاد کردن آبجت از کلاس; اون خط کد را اجرا می کنه و فقط نتیجه ی اجرای اون دستور را در class variable ها ذخیره می کنه.

مثلا توی همین مثال خودتون:
class A:
def __init__(self):
print('This is init from A')

class B:
A()

کد همانون کد خروجی هم همان خروجی که توی فیلم نشون میدهید
ولی اصلا از class variable استفاده نکردم.

اگه یه بار همان کدی که زدید را بدون آنکه در متغیر one ذخیره کنید, اجرا کنید, مشاهده می کنید که نتیجه همان قبلی است واین اجرا شدن __init__ و ساختن آبجکت از کلاس A ربطی به class variable ندارده.


امیرحسین بیگدلو

September 2022

مفهومش زیاد فرقی نکرد با اون چیزی که من توی ویدیو گفتم

عرفان رحیمی

September 2022

آدم اصلا فکرش رو هم نمیکنه مبحث به این کوچیکی انقدر مهم باشه

پاسخ به نظر


مرتضی

April 2022

عالی بود

پاسخ به نظر


sajad

March 2022

زیبا بود:)

پاسخ به نظر


میلاد

December 2020

من اینو همیشه میخوام توضیح بدم. حتما باید با مثال بگم. اصلا نمیشه معادل فارسی برای evaluate یا declaration پیدا کرد که مفهوم رو برسونه

پاسخ به نظر