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

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

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

ویدیوهای مشابه



آموزش cause و context در پایتون
امیرحسین بیگدلو

ارسال نظر


امیرحسن اله دادی

9 ماه قبل پاسخ به نظر

نکته خیلی خوبی بود.
سوالی که داشتم اینه اگر ما variable را در داخل کلاس اینطوری تعریف کنیم چطور اونم اجرا میشه؟؟
class A:
self.x = 'amir' #variable

ارسال نظر



AMIR

1 سال قبل پاسخ به نظر

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

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

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

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

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

ارسال نظر



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

1 سال قبل

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


AMIR

1 سال قبل

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

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

class B:
A()

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

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


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

1 سال قبل

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

عرفان رحیمی

1 سال قبل پاسخ به نظر

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

ارسال نظر



مرتضی

2 سال قبل پاسخ به نظر

عالی بود

ارسال نظر



sajad

2 سال قبل پاسخ به نظر

زیبا بود:)

ارسال نظر



میلاد

3 سال قبل پاسخ به نظر

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

ارسال نظر



مونگارد