Skip to content

Commit de9bea5

Browse files
author
Saeid Darvish
committed
l25: work on date class
1 parent 05c2721 commit de9bea5

2 files changed

Lines changed: 101 additions & 0 deletions

File tree

lessons/l21.rst

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -745,6 +745,39 @@ property@
745745
.. tip::
746746

747747
از ``property@`` تنها برای Instance Attributeها می‌توان استفاده کرد.
748+
749+
750+
یک کاربرد پنهان در استفاده از ``property@``، امکان ایجاد Attributeهای **read-only** و غیرقابل تغییر پس از نمونه‌سازی شی خواهد بود. برای این منظور تنها کافی است از پیاده‌سازی متد setter صرف‌نظر کنیم! به نمونه کد پایین توجه نمایید:
751+
752+
753+
.. code-block:: python
754+
:linenos:
755+
756+
class StaticNumber:
757+
758+
def __init__(self, number):
759+
self._number = number
760+
761+
@property
762+
def number(self):
763+
return self._number
764+
765+
766+
767+
obj = StaticNumber(number='000111')
768+
769+
obj.number = '000222'
770+
771+
::
772+
773+
Traceback (most recent call last):
774+
File "sample.py", line 14, in <module>
775+
obj.number = '000222'
776+
AttributeError: can't set attribute
777+
778+
779+
780+
748781
749782
750783
Context Manager و دستور ``with/as``

lessons/l25.rst

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,74 @@
5555
کلاس ``datetime.date``
5656
~~~~~~~~~~~~~~~~~~~~~~~~~~~
5757

58+
این کلاس نمایش ایجاد یک شی تاریخ در زبان برنامه‌نویسی پایتون می‌باشد. در ادامه این بخش به بررسی چگونگی ایجاد شی و اجزای آن خواهیم پرداخت.
59+
60+
ایجاد شی تاریخ
61+
------------------
62+
63+
**۱- با استفاده از نمونه‌سازی**::
64+
65+
>>> import datetime
66+
67+
>>> date = datetime.date(2021, 4, 7)
68+
69+
70+
یا ::
71+
72+
73+
>>> import datetime
74+
75+
>>> date = datetime.date(year=2021, month=4, day=7)
76+
77+
که::
78+
79+
>>> date
80+
datetime.date(2021, 4, 7)
81+
82+
>>> type(date)
83+
<class 'datetime.date'>
84+
85+
::
86+
87+
>>> date.year
88+
2021
89+
>>> date.month
90+
4
91+
>>> date.day
92+
7
93+
94+
برای نمونه‌سازی از کلاس ``datetime.date`` می‌بایست سه Instance attribute آن را مقداردهی نماییم. این سه attribute عبارتند از:
95+
96+
* ``year``: از نوع ``int`` می‌باشد و مقداری برابر با سال مورد نظر خواهد داشت. این مقدار می‌بایست کمتر یا برابر ``datetime.MAXYEAR`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.MAXYEAR>`__] و همچنین بیشتر یا برابر ``datetime.MINYEAR`` [`اسناد پایتون <https://docs.python.org/3/library/datetime.html#datetime.MINYEAR>`__] باشد (``MINYEAR <= year <= MAXYEAR``).
97+
98+
* ``month``: از نوع ``int`` می‌باشد و مقداری برابر با ماه مورد نظر خواهد داشت که می‌بایست عددی از بین اعداد ``1`` تا ``12`` باشد.
99+
100+
* ``day``: از نوع ``int`` می‌باشد و مقداری برابر با روزی مشخص در ماه ذکر شده خواهد داشت.
101+
102+
103+
104+
::
105+
106+
>>> datetime.MINYEAR
107+
1
108+
>>> datetime.MAXYEAR
109+
9999
110+
111+
>>> datetime.MINYEAR <= date.year <= datetime.MAXYEAR
112+
True
113+
>>> 1 <= date.month <= 12
114+
True
115+
>>> 1 <= date.day <= 31
116+
True
117+
118+
باید توجه داشت که مقدار این سه attribute پس از نمونه‌سازی قابل تغییر نخواهد بود و به اصطلاح read-only هستند::
119+
120+
>>> date.year = 2022
121+
Traceback (most recent call last):
122+
File "<stdin>", line 1, in <module>
123+
AttributeError: attribute 'year' of 'datetime.date' objects is not writable
124+
125+
58126

59127
کلاس ``datetime.time``
60128
~~~~~~~~~~~~~~~~~~~~~~~~~~~

0 commit comments

Comments
 (0)