# دکوراتور property پایتون چیست؟

با استفاده از دکوراتور property میتونید کاری کنید که متدهاتون به شکل property قابل دسترسی باشن. یعنی بدون نیاز به پرانتز بتونید متدهاتون رو صدا بزنید. شما میتوانید از دکوراتور property پایتون برای مشخص کردن setter و deleter نیز استفاده کنید.

 

در زیر متد name به عنوان یک property اعلام می شود. این متد باید مقدار ویژگی را برگرداند.

class Student:

    def __init__(self, name):
        self.__name = name

    @property
    def name(self):
        return self.__name

 

در بالا، دکوراتور @property  روی متد name() اعمال شد. متد name() مقدار ویژگی name__ را برمی‌گرداند. بنابراین، اکنون می‌توانیم از متد name() به عنوان property برای بدست آوردن مقدار ویژگی __name استفاده کنیم، همانطور که در زیر نشان داده شده است.

>>> s = Student('Steve')
>>> s.name 
'Steve'

 

 

# دکوراتور property.setter پایتون

در بالا، متد name() را به عنوان یک property تعریف کردیم. ما فقط می توانیم به مقدار ویژگی name دسترسی داشته باشیم اما نمی توانیم آن را تغییر دهیم. برای تغییر مقدار ویژگی، باید متد setter را برای ویژگی name با استفاده از دکوراتور @property-name.setter  تعریف کنیم، همانطور که در زیر نشان داده شده است.

class Student:

    def __init__(self, name):
        self.__name=name

    @property
    def name(self):
        return self.__name

    @name.setter   #property-name.setter decorator
    def name(self, value):
        self.__name = value

 

در بالا، دو متد name() داریم. یکی برای گیرنده و دیگری برای تغییر است. متد setter باید دارای آرگومان value باشد که بتوان از آن برای تخصیص ویژگی خصوصی زیرین استفاده کرد. اکنون می‌توانیم مقدار ویژگی را بازیابی و تغییر دهیم، همانطور که در زیر نشان داده شده است.

>>> s = Student('Steve')
>>> s.name 
'Steve'
>>> s.name = 'Bill'
'Bill'

 

 

# دکوراتور property.deleter پایتون

از دکوراتور property-name.deleter@ برای حذف یک ویژگی استفاده میشود. به مثال زیر دقت کنید:

class Student:
    def __init__(self, name):
        self.__name = name

    @property
    def name(self):
        return self.__name
    
    @name.setter
    def name(self, value):
        self.__name=value
    
    @name.deleter   #property-name.deleter decorator
    def name(self, value):
        print('Deleting..')
        del self.__name

 

دکوراتور property-name.deleter@ زمانی فعال خواهد شد که یخواهید یک ویژگی را با کلمه del حذف کنید. به محض اینکه یک ویژگی را حذف کردید، دیگر نمیتوانید به آن دسترسی داشته باشید:

>>> s = Student('Steve')
>>> del s.name 
Deleting.. 
>>> s.name 
Traceback (most recent call last):                              
File "<pyshell#16>", line 1, in <module>            
    p.name                                                      
File "C:\Python37\test.py", line 6, in name                     
    return self.__name                                          
AttributeError: 'Student' object has no attribute '_Student__name'

 



0

Intro

10:38

رایگان

1

Variable

12:30

رایگان

2

String

19:22

رایگان

3

List

8:46

رایگان

4

While

9:6

رایگان

5

If

8:37

رایگان

6

For

6:12

رایگان

7

range

4:17

رایگان

8

break, continue, pass

9:15

رایگان

9

Function

12:32

رایگان

10

List methods

12:11

رایگان

11

Tuple

8:29

رایگان

12

Set

7:47

رایگان

13

Dictionary

9:19

رایگان

14

Module

10:40

رایگان

15

fstring

5:35

رایگان

16

format

7:34

رایگان

17

File

17:14

رایگان

18

Scope

6:25

رایگان

19

OOP

12:15

رایگان

20

Method

20:19

رایگان

21

class/instance variable

14:7

رایگان

22

class/static method

13:25

رایگان

23

Inheritance

17:6

رایگان

24

Special methods

9:50

رایگان

25

Access points

11:12

رایگان

26

property

6:54

رایگان

27

Exceptions

21:17

رایگان

28

Standard library

12:51

رایگان

29

Docstring

10:49

رایگان

30

Virtualenv

11:2

رایگان

دوره های پیشنهادی

دوره آموزش دیتابیس Neo4j
دوره آموزش دیتابیس Neo4j
تکمیل ضبط
امیرحسین بیگدلو
دوره آموزش GraphQL در پایتون
دوره آموزش GraphQL در پایتون
تکمیل ضبط
امیرحسین بیگدلو
دوره آموزش FastAPI
دوره آموزش FastAPI
تکمیل ضبط
امیرحسین بیگدلو



ارسال نظر


S.Fam

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

من سه جلسه توی کلاس حضوری چیزی از این موضوع نگرفته بودم ولی شما توی 6 دقیقه قشنگ جمع و جورش کردید.
خیلی ممنون!

ارسال نظر



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

5 ماه قبل

سلام
باعث افتخار منه که مطالب مفید بوده

faezeh

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

سلام
من تازه شروع به یادگیری برنامه نویسی کرده ام اگر براتون مقدوره ترتیب واولویت بندی آموزش هاتون رو برای یک مبتدی بگید با تشکر

ارسال نظر



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

1 سال قبل

سلام
بعد از دوره مقدماتی پایتون دوره الگوریتم نویسی در پایتون رو ببیند. بعدش میتونید شروع کنید به دیدن دوره‌های جنگو.
بقیه دوره‌ها ترتیب خاصی ندارن و میتونید به هر شکلی که میخواید ببینیدشون.
پیشنهاد میکنم هر روز یک ویدیو تک قسمتی هم ببینید و تمرین کنیدشون

امیر

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

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

ارسال نظر



عاطفه

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

خیلی عالی
فقط یه سوال بر اساس داکیومنت پایتون property 4 قسمت داره
class property(fget=None, fset=None, fdel=None, doc=None)
شماdel و set رو گفتین
get میشه __init__ ?
, doc هم میشه خود متد @property? درسته؟

ارسال نظر



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

1 سال قبل

سلام
لینک اون بخش از داکیومنت رو برام بفرست ببینم

الهام

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

در یک کلام عالی.واقعا دم شما گرم. من قبلا آموزش پایتون دیده بودم با هزینه زیاد، اما کلی سوال تو ذهنم بود که با دیدن دوره های شما واقعا لذت بردم یعنی انقدر مفید و جامع هست که دیگه سوالی باقی نمیمونه . یک دنیا ممنون
فقط یک نکته ریز که شاید اهمیتی هم نداشته باشه، در ویدیو مربوط به فانکشن؛ جای پارامتر و آرگومان رو جابه جا ذکر می کنید ولی توی جزوه درسته.

ارسال نظر



عاطفه

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

عای بود ویدیو خسته نباشید

ارسال نظر



پدرام

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

حرف نداری. جزو بهترین‌هایی واقعا.

ارسال نظر



ناشناس

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

عالی توضیح میدی انصافا- دمت گرم

ارسال نظر



مونگارد