You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: lessons/l17.rst
+77Lines changed: 77 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -339,9 +339,17 @@ Class Attribute
339
339
متدها در واقع توابعی هستند که داخل هر کلاس تعریف میشوند. هر کلاس پایتون میتواند شامل سه نوع متد باشد:
340
340
341
341
* Instance Method
342
+
343
+
هر زمان در پیادهسازی یک کلاس، به شی جاری از کلاس یا Instance Attributeها نیاز داشتیم میبایست این نوع متد را پیادهسازی کنیم.
344
+
342
345
* Class Method
346
+
347
+
هر زمان در پیادهسازی یک کلاس، به خود کلاس یا Class Attributeها نیاز داشتیم میبایست این نوع متد را پیادهسازی کنیم.
348
+
343
349
* Static Method
344
350
351
+
هر زمان در پیادهسازی یک کلاس، به کلاس و به اشیای آن کلاس نیازی نداشتیم، میبایست این نوع متد را پیادهسازی کنیم. س
352
+
345
353
.. code-block:: python
346
354
:linenos:
347
355
@@ -411,11 +419,80 @@ Class Attribute
411
419
متد کلاس (Class Method)
412
420
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
413
421
422
+
این نوع متد همواره میبایست حداقل یک پارامتر داشته باشد. پارامتر نخست که معمولا ``cls`` نامگذاری میشود حاوی کلاس جاری است - در واقع این متد هیچ اطلاعاتی از اشیا کلاس ندارد و تنها کلاس را میشناسد و Class Attributeها را دستیابی و دستکاری میکند. مقدار ``cls`` نیز همانند ``self`` همواره از سوی مفسر پایتون ارسال میگردد و نیازی به ارسال از سوی برنامهنویس ندارد. این متد با استفاده از دکوراتور (Decorator - درس سیزدهم) ``classmethod@`` ایجاد میشود [`اسناد پایتون <https://docs.python.org/3/library/functions.html#classmethod>`__]:
این نوع متد (Class Method) را میتوان هم با استفاده از نام کلاس دستیابی کرد (سطر ۱۳) و هم با استفاده از اشیای آن کلاس (سطر ۱۵)، در واقع دکوراتور ``classmethod@`` کارهای لازم برای نادیده گرفتن شی و ارسال مقدار پارامتر ``cls`` را انجام میدهد.
414
455
415
456
416
457
متد ایستا (Static Method)
417
458
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
418
459
460
+
این نوع متد با استفاده از دکوراتور (Decorator - درس سیزدهم) ``staticmethod@`` ایجاد میشود [`اسناد پایتون <https://docs.python.org/3/library/functions.html#staticmethod>`__]. این نوع متد پایتون، نه از اشیا اطلاعاتی دارد و نه حتی از کلاس. در واقع به این نوع متد، نه مقدار ``self`` ارسال میشود و نه ``cls``:
461
+
462
+
463
+
.. code-block:: python
464
+
:linenos:
465
+
466
+
classStudent:
467
+
school_name ='My School'
468
+
469
+
def__init__(self, name, family):
470
+
self.name = name
471
+
self.family = family
472
+
473
+
@classmethod
474
+
defschool_info(cls):
475
+
print(cls)
476
+
returnf'name: {cls.school_name}'
477
+
478
+
@staticmethod
479
+
definfo():
480
+
return"This is a student class"
481
+
482
+
print(Student.info())
483
+
print('-'*30)
484
+
print(Student('My Name', 'My Family').info())
485
+
486
+
::
487
+
488
+
This is a student class
489
+
------------------------------
490
+
This is a student class
491
+
492
+
493
+
.. tip::
494
+
495
+
این نوع متد (Static Method) را میتوان هم با استفاده از نام کلاس دستیابی کرد (سطر ۱۷) و هم با استفاده از اشیای آن کلاس (سطر ۱۹)، در واقع دکوراتور ``staticmethod@`` کارهای لازم برای نادیده گرفتن شی و کلاس مربوط را انجام میدهد.
0 commit comments