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

September 2019

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

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

 

ارسال نظر

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

مسعود

August 2020

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

پاسخ به نظر


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

August 2020

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

python_developer

May 2020

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

پاسخ به نظر


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

May 2020

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

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


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

May 2020

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