Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit ddc5483

Browse filesBrowse files
author
Saeid Darvish
committed
l21: add __slots__
1 parent 8d79331 commit ddc5483
Copy full SHA for ddc5483

File tree

Expand file treeCollapse file tree

7 files changed

+86
-6
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

7 files changed

+86
-6
lines changed
Open diff view settings
Collapse file

‎_static/sitemap-index.xml‎

Copy file name to clipboardExpand all lines: _static/sitemap-index.xml
+10Lines 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>
Collapse file

‎lessons/l14.rst‎

Copy file name to clipboardExpand all lines: lessons/l14.rst
+2-2Lines changed: 2 additions & 2 deletions
  • Display the source diff
  • Display the rich diff
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

Collapse file

‎lessons/l15.rst‎

Copy file name to clipboardExpand all lines: lessons/l15.rst
+1-1Lines changed: 1 addition & 1 deletion
  • Display the source diff
  • Display the rich diff
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>`__]
Collapse file

‎lessons/l16.rst‎

Copy file name to clipboardExpand all lines: lessons/l16.rst
+1-1Lines changed: 1 addition & 1 deletion
  • Display the source diff
  • Display the rich diff
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`` پایتون می‌پردازد. پیش از مطالعه این درس می‌بایست حتما درس قبل را نیز مطالعه کرده باشید.
Collapse file

‎lessons/l21.rst‎

Copy file name to clipboardExpand all lines: lessons/l21.rst
+70-1Lines changed: 70 additions & 1 deletion
  • Display the source diff
  • Display the rich diff
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

Collapse file

‎lessons/l22.rst‎

Copy file name to clipboardExpand all lines: lessons/l22.rst
+1-1Lines changed: 1 addition & 1 deletion
  • Display the source diff
  • Display the rich diff
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/>`__] خوانده می‌شود.
Collapse file

‎log.rst‎

Copy file name to clipboardExpand all lines: log.rst
+1Lines changed: 1 addition & 0 deletions
  • Display the source diff
  • Display the rich diff
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 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.