Skip to content

Commit 5f962e7

Browse files
author
Saeid Darvish
committed
edited (l12 - l25)
1 parent f03488f commit 5f962e7

12 files changed

+139
-97
lines changed

source/_static/sitemap-index.xml

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -105,78 +105,78 @@
105105
<priority>0.80</priority>
106106
</url>
107107
<url>
108-
<loc>https://python.coderz.ir/lessons/l17.html</loc>
109-
<lastmod>2021-03-17T17:10:25+00:00</lastmod>
108+
<loc>https://python.coderz.ir/lessons/l17-object-oriented-programming-with-python.html</loc>
109+
<lastmod>2023-04-17T17:10:25+00:00</lastmod>
110110
<priority>0.80</priority>
111111
</url>
112112
<url>
113-
<loc>https://python.coderz.ir/lessons/l18.html</loc>
114-
<lastmod>2021-03-17T17:10:25+00:00</lastmod>
113+
<loc>https://python.coderz.ir/lessons/l18-inheritance-and-association-in-python.html</loc>
114+
<lastmod>2023-04-17T17:10:25+00:00</lastmod>
115115
<priority>0.80</priority>
116116
</url>
117117
<url>
118-
<loc>https://python.coderz.ir/lessons/l19.html</loc>
119-
<lastmod>2021-03-17T17:10:25+00:00</lastmod>
118+
<loc>https://python.coderz.ir/lessons/l19-metaclass-and-abstraction-in-python.html</loc>
119+
<lastmod>2023-04-17T17:10:25+00:00</lastmod>
120120
<priority>0.80</priority>
121121
</url>
122122
<url>
123-
<loc>https://python.coderz.ir/lessons/l20.html</loc>
124-
<lastmod>2021-03-18T17:10:25+00:00</lastmod>
123+
<loc>https://python.coderz.ir/lessons/l20-encapsulation-polymorphism-in-python.html</loc>
124+
<lastmod>2023-04-18T17:10:25+00:00</lastmod>
125125
<priority>0.80</priority>
126126
</url>
127127
<url>
128-
<loc>https://python.coderz.ir/lessons/l21.html</loc>
129-
<lastmod>2021-03-19T17:10:25+00:00</lastmod>
128+
<loc>https://python.coderz.ir/lessons/l21-descriptors-and-context-manager-in-python.html</loc>
129+
<lastmod>2023-04-19T17:10:25+00:00</lastmod>
130130
<priority>0.80</priority>
131131
</url>
132132
<url>
133-
<loc>https://python.coderz.ir/lessons/l22.html</loc>
134-
<lastmod>2021-03-19T17:10:25+00:00</lastmod>
133+
<loc>https://python.coderz.ir/lessons/l22-type-hinting-and-data-class-in-python.html</loc>
134+
<lastmod>2023-04-19T17:10:25+00:00</lastmod>
135135
<priority>0.80</priority>
136136
</url>
137137
<url>
138-
<loc>https://python.coderz.ir/lessons/l23.html</loc>
139-
<lastmod>2021-03-29T17:10:25+00:00</lastmod>
138+
<loc>https://python.coderz.ir/lessons/l23-traceback-and-exception-handling-in-python.html</loc>
139+
<lastmod>2023-04-29T17:10:25+00:00</lastmod>
140140
<priority>0.80</priority>
141141
</url>
142142
<url>
143-
<loc>https://python.coderz.ir/lessons/l24.html</loc>
144-
<lastmod>2021-04-01T17:10:25+00:00</lastmod>
143+
<loc>https://python.coderz.ir/lessons/l24-raise-exception-warning-and-assertion-in-python.html</loc>
144+
<lastmod>2023-04-01T17:10:25+00:00</lastmod>
145145
<priority>0.80</priority>
146146
</url>
147147
<url>
148-
<loc>https://python.coderz.ir/lessons/l25.html</loc>
149-
<lastmod>2021-04-15T17:10:25+00:00</lastmod>
148+
<loc>https://python.coderz.ir/lessons/l25-python-module-datetime.html</loc>
149+
<lastmod>2023-04-15T17:10:25+00:00</lastmod>
150150
<priority>0.80</priority>
151151
</url>
152152
<url>
153153
<loc>https://python.coderz.ir/changelog.html</loc>
154-
<lastmod>2023-03-17T17:10:19+00:00</lastmod>
154+
<lastmod>2023-04-17T17:10:19+00:00</lastmod>
155155
<priority>0.80</priority>
156156
</url>
157157
<url>
158158
<loc>https://python.coderz.ir/support.html</loc>
159-
<lastmod>2023-03-17T17:10:25+00:00</lastmod>
159+
<lastmod>2023-04-17T17:10:25+00:00</lastmod>
160160
<priority>0.80</priority>
161161
</url>
162162
<url>
163163
<loc>https://python.coderz.ir/support-report.html</loc>
164-
<lastmod>2023-03-17T17:10:25+00:00</lastmod>
164+
<lastmod>2023-04-17T17:10:25+00:00</lastmod>
165165
<priority>0.80</priority>
166166
</url>
167167
<url>
168168
<loc>https://python.coderz.ir/python-interactive.html</loc>
169-
<lastmod>2021-03-17T17:10:19+00:00</lastmod>
169+
<lastmod>2021-04-17T17:10:19+00:00</lastmod>
170170
<priority>0.80</priority>
171171
</url>
172172
<url>
173173
<loc>https://python.coderz.ir/python-resources.html</loc>
174-
<lastmod>2021-03-20T17:10:19+00:00</lastmod>
174+
<lastmod>2021-04-20T17:10:19+00:00</lastmod>
175175
<priority>0.80</priority>
176176
</url>
177177
<url>
178178
<loc>https://python.coderz.ir/index.html</loc>
179-
<lastmod>2021-03-17T17:10:23+00:00</lastmod>
179+
<lastmod>2021-04-17T17:10:23+00:00</lastmod>
180180
<priority>0.64</priority>
181181
</url>
182182

source/changelog.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,15 @@
1212
=============
1313

1414

15+
.. raw:: html
16+
17+
<p class="rubric" id="00137" ><a class="reference external" href="#00137">00137</a> - جمعه ۸ اردیبهشت ۱۴۰۲</p>
18+
19+
* دروس دوازدهم تا بیست و پنجم ویرایش و بروزرسانی گردید.
20+
21+
22+
----
23+
1524
.. raw:: html
1625

1726
<p class="rubric" id="00136" ><a class="reference external" href="#00136">00136</a> - پنج‌شنبه ۷ اردیبهشت ۱۴۰۲</p>

source/index.rst

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,15 @@
4848
lessons/l14-recursive-functions-and-memoization-in-python
4949
lessons/l15-regular-expression-in-python
5050
lessons/l16-python-module-re
51-
lessons/l17
52-
lessons/l18
53-
lessons/l19
54-
lessons/l20
55-
lessons/l21
56-
lessons/l22
57-
lessons/l23
58-
lessons/l24
59-
lessons/l25
51+
lessons/l17-object-oriented-programming-with-python
52+
lessons/l18-inheritance-and-association-in-python
53+
lessons/l19-metaclass-and-abstraction-in-python
54+
lessons/l20-encapsulation-polymorphism-in-python
55+
lessons/l21-descriptors-and-context-manager-in-python
56+
lessons/l22-type-hinting-and-data-class-in-python
57+
lessons/l23-traceback-and-exception-handling-in-python
58+
lessons/l24-raise-exception-warning-and-assertion-in-python
59+
lessons/l25-python-module-datetime
6060
changelog
6161
support
6262
support-report
@@ -72,7 +72,7 @@
7272
:scale: 60 %
7373
:alt: بروز شده با نسخه 3.11
7474

75-
**شروع:** فروردین ۱۳۹۴ **و** **آخرین بروزرسانی:** اردیبهشت ۱۴۰۲ [`گزارش توسعه <changelog.html>`__] - **در حال بروزرسانی با نسخه ۳.۱۱ پایتون**
75+
**شروع:** فروردین ۱۳۹۴ **و** **آخرین بروزرسانی:** اردیبهشت ۱۴۰۲ [`گزارش توسعه <changelog.html>`__] - **بروز شده با نسخه ۳.۱۱ پایتون**
7676

7777

7878

source/lessons/l17.rst renamed to source/lessons/l17-object-oriented-programming-with-python.rst

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
.. role:: emoji-size
22

33
.. meta::
4-
:description: کتاب آموزش زبان برنامه نویسی پایتون به فارسی، آموزش شی گرایی در پایتون، تعریف کلاس در پایتون، معرفی ساختار کلاس در پایتون، تعریف متد Method و صفت Attribute در کلاس‌های پایتون، معرفی Constructor در کلاس پایتون، ایجاد شی و نمونه سازی در پایتون، OOP در پایتون، شی hashable در پایتون، hash در پایتون، مقایسه دو شی در پایتون
5-
:keywords: آموزش, آموزش پایتون, آموزش برنامه نویسی, پایتون, تابع, کتابخانه, پایتون, شی گرایی در پایتون
4+
:description: پایتون به پارسی - کتاب آنلاین و آزاد آموزش زبان برنامه‌نویسی پایتون - درس هفدهم: شی گرایی (OOP) در پایتون: تعریف کلاس و ایجاد شی
65

76

7+
.. _lesson-17:
8+
89
درس ۱۷: شی گرایی (OOP) در پایتون: تعریف کلاس و ایجاد شی
910
============================================================================
1011

@@ -19,9 +20,6 @@
1920

2021
این درس بر ارائه تعاریف مربوط به کلاس (Class) و شی (Object) از مفاهیم شی‌گرایی حاکم در زبان برنامه‌نویسی پایتون تمرکز دارد و مفاهیم باقی مانده در دروس آتی ارائه خواهند شد.
2122

22-
توجه داشته باشید، هم اکنون پشتیبانی نسخه 2x پایتون به پایان رسیده است. بنابراین برخلاف دروس پیشین و به منظور جلوگیری از پیچیدگی‌های غیر ضروری، تمام مطالب این درس بر مبنای پایتون 3x ارائه می‌شود.
23-
24-
2523

2624
:emoji-size:`` سطح: متوسط
2725

@@ -33,6 +31,9 @@
3331

3432
----
3533

34+
35+
.. _oop:
36+
3637
برنامه‌نویسی شی گرا (Object-Oriented Programming)
3738
----------------------------------------------------------------------------------------------------
3839

@@ -43,6 +44,8 @@
4344
مفاهیم زیادی از پایتون تا پیش از این درس مطرح شده است، باید بدانیم که تمام آن‌ها از پیاده‌سازی شی گرا پیروی می‌کردند. هر چیزی در پایتون یک شی است. انواع داده مانند اعداد، رشته، لیست یا دیکشنری همگی شی بودند - نمونه‌هایی که از کلاس‌های مربوط به خود ایجاد شده‌اند. حتی تعریف تابع نیز به معنی ایجاد یک شی از کلاس متناطر آن بوده است. اما حالا می‌خواهیم نوع یا کلاس‌های مورد نظر خودمان را در برنامه ایجاد و اشیایی از این کلاس‌ها نمونه سازی کنیم. در ادامه به شرح این روند خواهیم پرداخت.
4445

4546

47+
.. _python-defining-class:
48+
4649
تعریف کلاس (Class)
4750
--------------------------------------------------------
4851

@@ -96,6 +99,9 @@
9699
...
97100
>>>
98101

102+
103+
.. _python-instantiation:
104+
99105
نمونه‌سازی (Instantiation)
100106
--------------------------------------------------------
101107

@@ -152,6 +158,10 @@
152158

153159
در زبان پایتون دو شیوه رایج برای بررسی نوع یک شی وجود دارد. یک راه استفاده از تابع آماده (built-in) ``type`` است [`اسناد پایتون <https://docs.python.org/3/library/functions.html#type>`__] که پیش‌تر از آن استفاده می‌کردیم و راه دیگر استفاده از تابع آماده (built-in) ``isinstance`` می‌باشد [`اسناد پایتون <https://docs.python.org/3/library/functions.html#isinstance>`__] این تابع دو آرگومان می‌پذیرد که به ترتیب شی و نوع مورد نظر هستند، در صورتی که شی از نوع دریافت شده باشد، مقدار ``True`` و در غیر این صورت ``False`` برمی‌گرداند.
154160

161+
162+
163+
.. _python-oop-constructor:
164+
155165
سازنده (Constructor)
156166
~~~~~~~~~~~~~~~~~~~~~~~~~
157167

@@ -235,7 +245,9 @@
235245
* ارسال آرگومان در زمان نمونه‌سازی شی یا همان پیاده‌سازی متد ``__init__`` به برنامه‌نویس این اطمینان را می‌دهد که شی جدید در یک وضعیت درست تنظیم شده است.
236246

237247
* آرگومان‌های متناظر با پارامتر‌های متد ``__init__`` (به جز ``self`` که توسط مفسر پایتون مقداردهی می‌گردد) می‌بایست در زمان نمونه‌سازی و فراخوانی کلاس ارسال گردد.
238-
248+
249+
250+
.. _python-callable-objects:
239251

240252
اشیا با قابلیت فراخوانی (Callable Objects)
241253
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -310,6 +322,8 @@
310322

311323

312324

325+
.. _python-oop-attributes:
326+
313327
صفات (Attributes)
314328
-----------------------------------------------------
315329

@@ -471,7 +485,7 @@ Class Attribute
471485
برای تغییر مقدار Class Attributeها، **از شی استفاده نکنید**، با این کار تنها یک Instance Attribute برای آن شی ایجاد می‌گردد (سطر ۲۶).
472486

473487

474-
488+
.. _python-oop-method:
475489

476490
متد (Method)
477491
-----------------------------------------------------
@@ -507,6 +521,7 @@ Class Attribute
507521
pass
508522
509523
524+
.. _python-instance-method:
510525

511526
متد شی (Instance Method)
512527
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -555,6 +570,7 @@ Class Attribute
555570
Instance Method‌ها تنها می‌توانند توسط اشیا فراخوانی شوند. روند فراخوانی یک متد توسط شی نیز به صورت نام شی + کاراکتر ``.‍‍`` + نام متد می‌باشد.
556571

557572

573+
.. _python-class-method:
558574

559575
متد کلاس (Class Method)
560576
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -594,6 +610,8 @@ Class Attribute
594610
این نوع متد (Class Method) را می‌توان هم با استفاده از نام کلاس دستیابی کرد (سطر ۱۳) و هم با استفاده از اشیای آن کلاس (سطر ۱۵)، در واقع دکوراتور ``classmethod@`` کارهای لازم برای نادیده گرفتن شی و ارسال مقدار پارامتر ``cls`` را انجام می‌دهد.
595611

596612

613+
.. _python-static-method:
614+
597615
متد ایستا (Static Method)
598616
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
599617

@@ -635,6 +653,10 @@ Class Attribute
635653
این نوع متد (Static Method) را می‌توان هم با استفاده از نام کلاس دستیابی کرد (سطر ۱۷) و هم با استفاده از اشیای آن کلاس (سطر ۱۹)، در واقع دکوراتور ``staticmethod@`` کارهای لازم برای نادیده گرفتن شی و کلاس مربوط را انجام می‌دهد.
636654

637655

656+
657+
.. _python-object-hash:
658+
659+
638660
مقدار Hash یک شی و کاربرد آن در پایتون
639661
---------------------------------------------
640662

@@ -670,6 +692,8 @@ Class Attribute
670692
* با دوباره اجرا کردن برنامه یا اسکریپت ممکن است به نتایج دیگری از مقدار hash برسید. در واقع تظمین یکتایی مقدار hash تولید شده در پایتون تنها در ازای حیات هر proccess یا «اجرای برنامه» پابرجا خواهد بود.
671693

672694

695+
.. _python-hashable-object:
696+
673697
شی hashable
674698
~~~~~~~~~~~~~~~~~~~~~
675699

@@ -688,6 +712,8 @@ Class Attribute
688712
متد ``__hash__`` جزو متدهای خاص در پایتون می‌باشد و هر کلاسی که در پایتون ایجاد می‌کنید به صورت ضمنی یک پیاده‌سازی پیش‌فرض از این متد را شامل می‌شود.
689713

690714

715+
.. _python-using-hash:
716+
691717
کاربرد hash در پایتون
692718
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
693719

@@ -784,14 +810,11 @@ Class Attribute
784810
در این مثال هر دو Attribute کلاس Student از نوع immutable بودند، بنابراین از خود آن‌ها برای مقایسه و محاسبه مقدار hash استفاده کردیم. به هر حال منطق پیاده‌سازی این دو متد بر اساس مسئله مطرح شده، بر عهده برنامه‌نویس می‌باشد. حتی می‌توانید از مقدار تابع ``()id`` یا همان ``id(self)`` بهره بگیرید.
785811

786812

787-
788813
|
789814
790815
----
791816

792817
:emoji-size:`😊` امیدوارم مفید بوده باشه
793818

794-
`لطفا دیدگاه و سوال‌های مرتبط با این درس خود را در کدرز مطرح نمایید. <https://www.coderz.ir/python-tutorial-oop-class-and-object>`_
795-
796819

797820

source/lessons/l18.rst renamed to source/lessons/l18-inheritance-and-association-in-python.rst

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
.. role:: emoji-size
22

33
.. meta::
4-
:description: کتاب آموزش زبان برنامه نویسی پایتون به فارسی، آموزش شی گرایی در پایتون، معرفی رابطه های وراثت (Inheritance) و انجمن (Association) در پایان، OOP در پایتون، ترکیب در پایتون، Method Resolution Order یا MRO پایتون، Composition و Aggregation در پایتون، وراثت چندگانه در پایتون، Multiple Inheritance پایتون، کلاس Mixin در پایتون
5-
:keywords: آموزش, آموزش پایتون, آموزش برنامه نویسی, پایتون, تابع, کتابخانه, پایتون, شی گرایی در پایتون
4+
:description: پایتون به پارسی - کتاب آنلاین و آزاد آموزش زبان برنامه‌نویسی پایتون - درس هجدهم: شی گرایی (OOP) در پایتون: وراثت (Inheritance)، Association و Mixin
65

76

7+
.. _lesson-18:
8+
89
درس ۱۸: شی گرایی (OOP) در پایتون: وراثت (Inheritance)، Association و Mixin
910
========================================================================================================
1011

@@ -20,9 +21,6 @@
2021

2122
در این درس همچنین به شرح **وراثت چندگانه (Multiple Inheritance)**، **Method Resolution Order** و کلاس‌های **Mixin** در زبان برنامه‌نویسی پایتون خواهیم پرداخت.
2223

23-
توجه داشته باشید، هم اکنون پشتیبانی نسخه 2x پایتون به پایان رسیده است. بنابراین همانند درس پیش و به منظور جلوگیری از پیچیدگی‌های غیر ضروری، تمام مطالب این درس بر مبنای پایتون 3x ارائه می‌شود.
24-
25-
2624

2725
:emoji-size:`` سطح: متوسط
2826

@@ -765,7 +763,6 @@ Mixin
765763

766764
:emoji-size:`😊` امیدوارم مفید بوده باشه
767765

768-
`لطفا دیدگاه و سوال‌های مرتبط با این درس خود را در کدرز مطرح نمایید. <https://www.coderz.ir/python-tutorial-oop-inheritance-mro-association>`_
769766

770767

771768

source/lessons/l19.rst renamed to source/lessons/l19-metaclass-and-abstraction-in-python.rst

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
.. role:: emoji-size
22

33
.. meta::
4-
:description: کتاب آموزش زبان برنامه نویسی پایتون به فارسی، آموزش شی گرایی در پایتون، OOP در پایتون، انتزاع در پایتون، Abstraction و Metaclass در پایتون، متاکلاس در پایتون، متا کلاس (Metaclass) در پایتون، انتزاع یا تجرید (Abstraction) در پایتون، abc در پایتون
5-
:keywords: آموزش, آموزش پایتون, آموزش برنامه نویسی, پایتون, تابع, کتابخانه, پایتون, شی گرایی در پایتون
4+
:description: پایتون به پارسی - کتاب آنلاین و آزاد آموزش زبان برنامه‌نویسی پایتون - درس نوزدهم: شی گرایی (OOP) در پایتون: متا کلاس (Metaclass) و انتزاع (Abstraction)
65

76

7+
8+
.. _lesson-19:
9+
810
درس ۱۹: شی گرایی (OOP) در پایتون: متا کلاس (Metaclass) و انتزاع (Abstraction)
911
========================================================================================================
1012

@@ -18,10 +20,6 @@
1820

1921
این درس در ادامه دروس پیش مرتبط با آموزش شی گرایی در پایتون می‌باشد و به بررسی قابلیت **متا کلاس (Metaclass)** در پایتون می‌پردازد و در ادامه یکی دیگر از مفاهیم اصلی برنامه‌نویسی شی گرا به نام **انتزاع (Abstraction)** را معرفی و چگونگی پیاده‌سازی آن در زبان برنامه‌نویسی پایتون را بررسی خواهیم کرد.
2022

21-
توجه داشته باشید، هم اکنون پشتیبانی نسخه 2x پایتون به پایان رسیده است. بنابراین همانند دروس پیش شی گرایی و به منظور جلوگیری از پیچیدگی‌های غیر ضروری، تمام مطالب این درس بر مبنای پایتون 3x ارائه می‌شود.
22-
23-
24-
2523

2624

2725
:emoji-size:`` سطح: متوسط
@@ -398,7 +396,5 @@
398396

399397
:emoji-size:`😊` امیدوارم مفید بوده باشه
400398

401-
`لطفا دیدگاه و سوال‌های مرتبط با این درس خود را در کدرز مطرح نمایید. <https://www.coderz.ir/python-tutorial-oop-metaclass-abstraction>`_
402-
403399

404400

0 commit comments

Comments
 (0)