properties

  • مدرس: علی بیگدلی
  • تاریخ انتشار: Aug 24, 2020

Properties یک راه برای سفارشی کردن دسترسی به ویژگی های نمونه فراهم می کند. آنها با قرار دادن دکوراتور املاک در بالا یک روش ایجاد می شوند، بدین معنا که هنگامی که نمونه به همان نامی که روش دسترسی دارد، به آن متصل شود، روش به جای آن نامیده می شود. یک استفاده مشترک از یک ملک این است که یک ویژگی را فقط خواندنی بسازیم. مثال:

class Pizza:
  def __init__(self, toppings):
    self.toppings = toppings
    
  @property
  def pineapple_allowed(self):
    return False

pizza = Pizza(["cheese", "tomato"])
print(pizza.pineapple_allowed)
pizza.pineapple_allowed = True

خروجی:

>>>
False

AttributeError: can't set attribute
>>>

خواص را می توان با تعریف توابع setter / getter تنظیم کرد. تابع seter مقدار ارزش متناظر را تعیین می کند. دریافت کننده ارزش می گیرد. برای تعریف یک تنظیم کننده، شما باید از دکوراتور با همان نام مالکیت استفاده کنید، به دنبال یک نقطه و کلمه کلیدی setter. همین امر برای تعریف توابع getter نیز کاربرد دارد. مثال:

class Pizza:
  def __init__(self, toppings):
    self.toppings = toppings
    self._pineapple_allowed = False

  @property
  def pineapple_allowed(self):
    return self._pineapple_allowed

  @pineapple_allowed.setter
  def pineapple_allowed(self, value):
    if value:
      password = input("Enter the password: ")
      if password == "Sw0rdf1sh!":
        self._pineapple_allowed = value
      else:
        raise ValueError("Alert! Intruder!")

pizza = Pizza(["cheese", "tomato"])
print(pizza.pineapple_allowed)
pizza.pineapple_allowed = True
print(pizza.pineapple_allowed)

خروجی:

>>>
False
Enter the password: Sw0rdf1sh!
True

 

ثبت دیدگاه
نام *
ایمیل*
دیدگاه *
4دیدگاه
  • علی چنگایی
    1 month, 1 week ago

    بهترین دوره ی عمرم بود همه چیزش در بالاترین سطح بودش و برعکس دوره هایی که تو سایتای دیگه هست با مثال های پایه و ساده و دور از ریاضیات پیچیده اموزش دادین ممنونم واقعا ک بصورت رایگان همچین دوره ایی رو منتشر کردین

    • علی بیگدلی
      1 month, 1 week ago

      خواهش می کنم نظر لطفتونه امیدوارم که براتون مفید واقع شده باشه و ازش بتونید استفاده لازم رو ببرید

  • Saeed SMG
    2 months, 1 week ago

    سلام خسته نباشین
    آموزشتون عالی بود و خیلی بهم کمک کرد، موفق باشین ❤
    فقط یک سوال داشتم، اینکه دوره مقدماتی پایتون همین ۵۱ قسمت بود ؟
    یا ادامه‌ش رو بعدا میزارین ؟

    • علی بیگدلی
      2 months, 1 week ago

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