Skip to content

Commit ddc5483

Browse files
author
Saeid Darvish
committed
l21: add __slots__
1 parent 8d79331 commit ddc5483

7 files changed

Lines changed: 86 additions & 6 deletions

File tree

_static/sitemap-index.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,16 @@
114114
<lastmod>2021-03-18T17:10:25+00:00</lastmod>
115115
<priority>0.80</priority>
116116
</url>
117+
<url>
118+
<loc>https://python.coderz.ir/lessons/l21.html</loc>
119+
<lastmod>2021-03-19T17:10:25+00:00</lastmod>
120+
<priority>0.80</priority>
121+
</url>
122+
<url>
123+
<loc>https://python.coderz.ir/lessons/l22.html</loc>
124+
<lastmod>2021-03-19T17:10:25+00:00</lastmod>
125+
<priority>0.80</priority>
126+
</url>
117127
<url>
118128
<loc>https://python.coderz.ir/log.html</loc>
119129
<lastmod>2021-03-17T17:10:19+00:00</lastmod>

lessons/l14.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
:keywords: آموزش, آموزش پایتون, آموزش برنامه نویسی, پایتون, تابع, Recursive, پایتون, Built-in, Generator, Coroutine, docstring
66

77

8-
درس ۱۴: تابع در پایتون: تابع بازگشتی و Memoization
9-
=======================================================
8+
درس ۱۴: تابع در پایتون: تابع بازگشتی (Recursive) و Memoization
9+
==============================================================================
1010

1111
این درس بخش پایانی از بررسی تابع در پایتون می‌باشد و موضوعات باقی‌مانده از مبحث تابع پایتون در این درس بیان می‌شود.
1212

lessons/l15.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
:keywords: آموزش, آموزش پایتون, آموزش برنامه نویسی, پایتون, تابع, کتابخانه, پایتون, re
66

77

8-
درس ۱۵: Regular Expression در پایتون - بخش ۱
8+
درس ۱۵: عبارات با قاعده (Regular Expression) یا RegEx در پایتون
99
============================================================================
1010

1111
**عبارات با قاعده** (**Regular expression**) یا به اختصار **RegEx**، رشته‌ای حاوی کاراکترهایی خاص و با معنی است که در عملیات‌هایی مانند یافتن (find)، جاگذاری (repleace) و اعتبارسنجی (validation) به شدت کاربرد پیدا کرده است. در واقع با استفاده از RegEx می‌توان یک الگو (pattern) برای جستجو در متن یا تطابق آن ایجاد کرد. [`ویکی‌پدیا <https://en.wikipedia.org/wiki/Regular_expression>`__]

lessons/l16.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
:keywords: آموزش, آموزش پایتون, آموزش برنامه نویسی, پایتون, تابع, کتابخانه, پایتون, re
66

77

8-
درس ۱۶: Regular Expression در پایتون - بخش ۲
8+
درس ۱۶: کتابخانه استاندارد پایتون: re
99
============================================================================
1010

1111
این درس در ادامه درس قبل (پانزدهم) می‌باشد و به شرح برخی از تابع‌های کاربردی موجود در ماژول ``re`` پایتون می‌پردازد. پیش از مطالعه این درس می‌بایست حتما درس قبل را نیز مطالعه کرده باشید.

lessons/l21.rst

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
:keywords: آموزش, آموزش پایتون, آموزش برنامه نویسی, پایتون, Decorators, کتابخانه, پایتون, شی گرایی در پایتون, Descriptors,Properties
66

77

8-
درس ۲۱: شی گرایی (OOP) در پایتون: Descriptors ،Decorator و Properties
8+
درس ۲۱: شی گرایی (OOP) در پایتون: __Descriptors ،Decorator ،__slots و Properties
99
===================================================================================================
1010

1111

@@ -24,6 +24,75 @@
2424
----
2525

2626

27+
__slots__
28+
----------------------------
29+
30+
پیش از هر توضیحی به نمونه کد زیر توجه نمایید:
31+
32+
33+
.. code-block:: python
34+
:linenos:
35+
36+
class Sample:
37+
def __init__(self, a, b):
38+
self.a = a
39+
self.b = b
40+
41+
42+
objet = Sample(1, 2)
43+
print(objet.__dict__)
44+
45+
print('-' * 30)
46+
47+
objet.c = 3
48+
print(objet.__dict__)
49+
50+
print('-' * 30)
51+
52+
objet.__dict__['d'] = 4
53+
print(objet.__dict__)
54+
print(objet.d)
55+
56+
::
57+
58+
{'a': 1, 'b': 2}
59+
------------------------------
60+
{'a': 1, 'b': 2, 'c': 3}
61+
------------------------------
62+
{'a': 1, 'b': 2, 'c': 3, 'd': 4}
63+
4
64+
65+
پیشتر نیز صحبت کرده بودیم، می‌توان پس از ایجاد یک شی به آن Attribute اضافه کنیم (به دو سطر ۱۲ و ۱۷ توجه نمایید). داده‌های مربوط به تمام Attributeهای یک شی توسط یک شی دیکشنری که از طریق ``__dict__`` در دسترس می‌باشد، نگهداری می‌شود.
66+
67+
``__slots__`` [`اسناد پایتون <https://docs.python.org/3/reference/datamodel.html#slots>`__] یک Attribute ویژه در پایتون می‌باشد که با مقداردهی آن می‌توان از ایجاد ``__dict__`` جلوگیری و در نتیجه قابلیت افزودن Attribute جدید به شی را غیرفعال و تعداد Attributeهای آن را از همان نقطه ایجاد، ثابت نگه‌داشت:
68+
69+
70+
.. code-block:: python
71+
:linenos:
72+
73+
class Sample:
74+
75+
__slots__ = ('a', 'b')
76+
77+
def __init__(self, a, b):
78+
self.a = a
79+
self.b = b
80+
81+
82+
objet = Sample(1, 2)
83+
print(objet.__dict__)
84+
85+
::
86+
87+
Traceback (most recent call last):
88+
File "sample.py", line 11, in <module>
89+
print(objet.__dict__)
90+
AttributeError: 'Sample' object has no attribute '__dict__'
91+
92+
93+
از مزایای ``__slots__`` می‌توان به کاهش مصرف حافطه (RAM) به خصوص در مورد کلاس‌هایی که قرار است اشیایی خیلی زیادی از آن‌ها ایجاد گردد، اشاره نمود.
94+
95+
2796
Decorators
2897
----------------------------
2998

lessons/l22.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
:keywords: آموزش, آموزش پایتون, آموزش برنامه نویسی, پایتون, Data Class, کتابخانه, پایتون, شی گرایی در پایتون
66

77

8-
درس ۲۲: شی گرایی (OOP) در پایتون: دیتا کلاس (Data Class)
8+
درس ۲۲: شی گرایی (OOP) در پایتون: Type Hinting و دیتا کلاس (Data Class)
99
===================================================================================================
1010

1111
این درس به عنوان آخرین بخش از دروس آموزش شی‌گرایی در زبان برنامه‌نویسی پایتون به شرح یک ویژگی جدید در این زبان با نام **دیتا کلاس (Data Class)** می‌پردازد. البته پیش از شروع لازم است با یک سینتکس جدید نیز در پایتون آشنا شویم، در این سینتکس ما نوع داده‌های خود را نیز به صراحت ذکر می‌کنیم، شیوه‌ای که Type Hints [`PEP 484 <https://www.python.org/dev/peps/pep-0484/>`__] خوانده می‌شود.

log.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
* درس بیست و دوم با عنوان «شی گرایی (OOP) در پایتون: دیتا کلاس (Data Class)» به فهرست کتاب افزوده شد.
2020
* بروزرسانی: مبحث «مقدار Hash یک شی و کاربرد آن در پایتون» به درس هفدهم اضافه گردید.
2121
* بروزرسانی: مبحث «Mixin» به درس هجدهم اضافه گردید.
22+
* نام درس شانزدهم اصلاح گردید.
2223

2324
----
2425

0 commit comments

Comments
 (0)