ویدیو آموزش متا کلاس ها در پایتون

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

پیش نیازها:   __new__    __call__

متا کلاس ها در پایتون برای تغییر در نحوه رفتار دیگر کلاس ها به کار میرن. متا کلاس ها بسیار بحث پیچیده ای هستن و اگه تازه کار با پایتون رو شروع کردین به هیچ وجه پیشنهاد نمیکنم که این ویدیو رو ببینید

 

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



آنالیز کد با pylint پایتون
امیرحسین بیگدلو

ارسال نظر


محمد

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

سلام.
توی این ویدیو دقیقه آخرش گفتید که اگه بخواهیم رفتار یه کلاس را عوض کنیم بجای متاکلاس از کلاس دکوریتور استفاده می کنیم.
اما مثل اینکه هنوز ویدیویی درباره این موضوع نساختید؟؟؟؟؟؟؟

ارسال نظر



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

1 سال قبل

سلام
نگفتم هنوز

سلام

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

سلام خسته نباشید
یک ویدیو داشتیدکه کلاس داخلی و built-in به اسم object رو توضیح داده بودین- همون که همه کلاس ها پشت زمینه ازش ارث بری میکنن - هرچی میگردم ویدیوش رو پیدا نمیکنم - پاکش کردید ؟

منظور ویدیوی زیر نیستا:
https://www.mongard.ir/one_part/172/inheriting-python-built-objects/

ارسال نظر



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

1 سال قبل

سلام
فکر کنم این بود
https://www.mongard.ir/one_part/25/python-multi-inheritance/


سلام

1 سال قبل

سلام
اونو دیدم - توی اون نبود :(


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

1 سال قبل

یادم نمیاد اصلا من جایی کلاس object رو گفته باشم

سجاد

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

سلام یه ویدیو داشتید که در مورد ارٍثبری از object بود ، کجاست ؟ هرچی میگردم پیدا نمی کنم

ارسال نظر



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

1 سال قبل

سلام
فکر کنم این ویدیو رو میگی:
https://www.mongard.ir/one_part/172/inheriting-python-built-objects/

amin

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

با سلام و خسته نباشید
استاد ممنون از ویدئوهای عالی آموزشی که ضبط میکنید ولی بعضی از اونها بعد چند ثانیه یا دقیقه تار شده وضوحشون از بین میره اگه امکان داره مشکل رو برطرف کنید خیلی ممنون

ارسال نظر



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

2 سال قبل

سلام
کیفیت ویدیو بسته به سرعت اینترنت شما تغییر میکنه.
میتونید با زدن علامت چرخ دنده که پایین هست، کیفیت رو انتخاب کنید

سجاد

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

درود
یک سوال چرا وقتی تایپ super().__call__() صدا میزنیم میگه از جنس db هست و super برای کلاس پدر هست؟

ارسال نظر



باب

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

درود
اونجا که برای class DB نوشتید metaclass=Singleton ، دیگه به طور پیش فرض از type پیروی نمیکنه ؟ یا همزمان از هم از tpye پیروی میکنه و هم از singleton ?
یعنی class DB ، دو تا metaclass داره یا یکی ؟

ارسال نظر



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

2 سال قبل

سلام
خیر، دیگه از type پیروی نمیکنه.

باب

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

عالی
خیلی خوب درس میدی 3>

ارسال نظر



مسعود

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

سلام
در این صفحه لینک __new__ رو اصلاح کنین چون همون لینک __call__ رو باز میکنه

ارسال نظر



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

3 سال قبل

سلام
ممنون از شما. اصلاح شد

python_developer

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

سلام
میخواستم بدونم تفاوت metaclass ها با decorator ها در چیه؟
آیا کاری هست که بشه با یکی کرد و با اونیکی نه؟
ممنون

ارسال نظر



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

3 سال قبل

سلام
متاکلاس‌ها و دکوریتورها مباحث نسبتا نزدیکی به هم هستند. هر دو زمانی استفاده میشند که بخواید قبل از یه کاری، یه کار دیگه بکنید.
متاکلاس‌ها بسیار سخت هستند و در استفاده از اونها باید دقت کرد حتی کمتر دیدم که برنامه‌نویس های حرفه‌ای از اونها استفاده کنند. متاکلاس‌ها ویژگی هستند که ۹۹ درصد برنامه نویس‌ها بهش احتیاج ندارند. زمانی استفاده میشند که شما بخواید به صورت اتوماتیک یک کار سنگینی انجام بدین مثلا داخل بخش forms و models جنگو به شدت از متاکلاس‌ها استفاده میشه. به خاطر همینه که شما با یک خط کد کار بزرگی رو انجام میدید. شما میتونید با استفاده از متاکلاس‌ها به خوبی کارهای سنگینی رو انجام بدین.

اما دکوریتورها به نسبت متاکلاس‌ها بسیار ساده هستند و نسبت به متاکلاس‌ها قدرت کمتری دارند. به خاطر همین سادگیه که خیلی‌ها ترجیح میدن از دکوریتورها بجای متاکلاس‌ها استفاده کنند.
اگر شما دارید یک فریمورک مینویسید به احتمال زیاد از متاکلاس‌ها استفاده خواهید کرد در غیر اینصورت دکوریتورها براتون کافی خواهند بود.
در رابطه با سوال دومتون باید بگم که اینها رو میتونید بجای همدیگه استفاده کنید اما کارتون سخت خواهد شد. شما فکر کن در جنگو بجای متاکلاس‌ها از دکوریتورها استفاده میکردند، میدونید چه کد زشتی میشد؟! اما الآن شما برو سورس کد جنگو رو ببین. آدم لذت میبره که چقدر قابل فهمه.
این رو هم بگم که استفاده از متاکلاس‌ها در پروژه‌های کوچک اصلا پیشنهاد نمیشه. مثل اینکه شما با یک پتک بخواید پشه بکشید.


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

3 سال قبل

راستی این رو هم بگم که اگر خواستید بیشتر درمورد دکوریتورها بدونید به لینک زیر مراجعه کنید
https://www.mongard.ir/one_part/10/how-python-decorators-works/

مونگارد