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

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

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

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

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

پیتزاسازی های خوشمزه با @classmethod در پایتون

دسته بندی :اخبار سایت 28 فوریه 2023 علیرضا بابامرادی 370
پیتزاسازی های خوشمزه با @classmethod در پایتون

اگر در دنیای واقعی با پیتزا آشنا شده اید، این را می دانید تنوع خوشمزه زیادی وجود دارد:Pizza([‘mozzarella’, ‘tomatoes’, ‘ham’, ‘mushrooms’]) Pizza([‘mozzarella’] * 4)ایتالیایی ها طبقه بندی پیتزا خود را قرن ها پیش کشف کردند و همینطور این انواع پیتزای خوشمزه همه نام های خاص خود را دارند. ما خوب عمل می کنیم تا از آن بهره ببریم و به کاربران کلاس پیتزای خودمان بهتر دهیم رابط برای ایجاد اشیاء پیتزای مورد علاقه آنها. یک راه خوب و تمیز برای انجام این کار استفاده از متدهای کلاس به عنوان کارخانه است توابع 7 برای انواع مختلف پیتزا که می توانیم ایجاد کنیم:class Pizza: Pizza([‘mozzarella’, ‘tomatoes’]) def __init__(self, ingredients): def __repr__(self): self.ingredients = ingredients return f’Pizza({self.ingredients!r})’def margherita(cls): @classmethod return cls([‘mozzarella’, ‘tomatoes’]) def prosciutto(cls): @classmethod return cls([‘mozzarella’, ‘tomatoes’, ‘ham’])توجه داشته باشید که چگونه از آرگومان cls در margherita و استفاده می کنم به طور مستقیم. روش های کارخانه پروشوتو به جای فراخوانی سازنده پیتزا این ترفندی است که می توانید از آن برای پیروی از خودت تکرار نکن (DRY)۸ استفاده کنی اصل اگر زمانی تصمیم به تغییر نام این کلاس بگیریم، این کار را نخواهیم کرد باید به یاد داشته باشید که نام سازنده را در تمام کارخانه به روز کنید حالا با این روش های کارخانه ای چه کنیم؟ بیایید آنها را امتحان کنیم: >>> Pizza.margherita() کارکرد. Pizza([‘mozzarella’, ‘tomatoes’]) Pizza([‘mozzarella’, ‘tomatoes’, ‘ham’])همانطور که می بینید، ما می توانیم از توابع کارخانه برای ایجاد پیتزای جدید استفاده کنیم اشیایی که دقیقاً همانطور که ما می خواهیم پیکربندی شده اند. همه آنها استفاده می کنند همان سازنده init به صورت داخلی و به سادگی یک میانبر ارائه می دهد برای به خاطر سپردن همه اجزای مختلف >>> Pizza.prosciutto() راه دیگر برای نگاه کردن به این استفاده از متدهای کلاس این است که متوجه شوید که آنها به شما امکان می دهد سازنده های جایگزین برای کلاس های خود تعریف کنید. پایتون فقط یک متد init را در هر کلاس اجازه می دهد. استفاده از روش کلاس امکان اضافه کردن سازنده های جایگزین را به میزان لازم فراهم می کند. این می‌تواند رابط کلاس‌های شما را مستندسازی کند زمان استفاده از روش های استاتیک (تا حد معینی) و استفاده از آنها را ساده کنید. به شما بگویم – من فقط قیاس پیتزا را نازک تر می کنم و در اینجا ارائه یک مثال خوب کمی دشوارتر است، اما این چیزی است که من به آن رسیدم:import math نازک تر… (آما!) class Pizza: self.radius = radius self.ingredients = ingredients def __repr__(self): def __init__(self, radius, ingredients): f'{self.ingredients!r})’) return (f’Pizza({self.radius!r}, ‘ def area(self): @staticmethod def circle_area(r): return self.circle_area(self.radius) return r ** 2 * math.pi حالا من اینجا چه چیزی را تغییر دادم؟ ابتدا سازنده و را اصلاح کردم من همچنین یک روش نمونه area() اضافه کردم که مساحت پیتزا را محاسبه و دوباره برگرداند. این نیز کاندیدای خوبی برای یک خواهد بود @property—اما هی، این فقط یک نمونه اسباب بازی است.repr برای پذیرش آرگومان شعاع اضافی.

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

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

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

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

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

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

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

لینک کوتاه:
0