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
+68-2Lines changed: 68 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -261,9 +261,75 @@ Instance Attribute
261
261
Class Attribute
262
262
~~~~~~~~~~~~~~~~~~~~~
263
263
264
+
به Attributeهای خاص یک کلاس گفته میشود و در واقع متغیرهایی است که درون کلاس و خارج از متدها تعریف میگردند. کاربرد این Attributeها به اشتراک گذاشتن یک یا چند مقدار یکسان در بین تمام اشیاست.
264
265
266
+
تمام اشیای یک کلاس به Class Attributeهای آن کلاس دسترسی دارند:
مقدار Class Attributeها هم با استفاده از نام کلاس قابل دستیابی است (سطر ۵) و هم با استفاده از هر یک از اشیا آن کلاس (سطرهای ۱۲ و ۱۳).
323
+
324
+
.. tip::
325
+
برای تغییر مقدار Class Attribute در داخل کلاس از Class Method - *در ادامه شرح داده میشود* - استفاده میشود و در بیرون کلاس **با استفاده از نام کلاس** به صورت زیر (سطر ۱۸)::
326
+
327
+
ClassName.class_attribute = new_value
328
+
329
+
.. tip::
330
+
331
+
برای تغییر مقدار Class Attributeها، **از شی استفاده نکنید**، با این کار تنها یک Instance Attribute برای آن شی ایجاد میگردد (سطر ۲۶).
332
+
267
333
268
334
269
335
@@ -297,7 +363,7 @@ Class Attribute
297
363
متد شی (Instance Method)
298
364
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
299
365
300
-
رایجترین نوع متد در پایتون است. برای ایجاد این متد نیازی به دکوراتور (Decorator - درس سیزدهم) نیست. همانطور که از نام این متد مشخص است این متد تنها از سوی اشیا یک کلاس قابل استفاده است. هر شی از کلاس صفات (Attributes - *کمی جلوتر شرح داده خواهد شد*) خاص خود را دارد که از این متدها میتوان برای دستیابی، دستکاری آنها استفاده کرد.
366
+
رایجترین نوع متد در پایتون است. برای ایجاد این متد نیازی به دکوراتور (Decorator - درس سیزدهم) نیست. همانطور که از نام این متد مشخص است این متد تنها از سوی اشیا یک کلاس قابل استفاده است. همانطور که پیشتر صحبت شد، هر شی از کلاس صفات خاص خود را دارد (Instance Attributes) که از این متدها میتوان برای دستیابی و دستکاری آنها استفاده کرد.
301
367
302
368
این نوع متد همواره میبایست حداقل یک پارامتر داشته باشد. پارامتر نخست که معمولا ``self`` نامگذاری میشود حاوی شی جاری از کلاس است - در واقع همان شی ای که این متد را فراخوانی کرده است. این مقدار همواره از سوی مفسر پایتون ارسال میگردد و نیازی به ارسال از سوی برنامهنویس ندارد:
303
369
@@ -334,7 +400,7 @@ Class Attribute
334
400
##########
335
401
336
402
337
-
گفته شده که متد ``__init__`` جزیی از مفهوم Constructor کلاسهای پایتون بوده و برای شخصیسازی یک شی در زمان ایجاد آن به کار میرود - کاربرد معمول: افزودن Attribute (*که در بخشهای آتی شرح داده میشود*) به شی است. در نمونه کد بالا، این متد یک پارامتر char دریافت میکند - این پارامتر مقدار پیشفرض ``*`` را دارد، بنابراین ارسال آرگومان متناظر برای آن اجباری نیست (تابع در پایتون - درس دوازدهم). با این کار میتوانیم در زمان نمونهسازی شی، یک Attribute با نام character در آن تعریف نماییم (سطر ۴). ما میخواهیم مقدار Attribute یا صفت character از هر شی را به تعداد دلخواه چاپ نماییم، از آنجا که این مقدار یک صفتِ متعلق به شی است و در ازای هر شی این مقدار میتواند متفاوت باشد پس ما برای این کار میبایست که یک Instance Method در بدنه کلاس تعریف کنیم (متد ``multiply_print`` ) - چرا که تنها در این صورت است که میتوانیم به ``self`` دسترسی داشته باشیم و مقدار صفت character را از آن دستیابی کنیم.
403
+
گفته شده که متد ``__init__`` جزیی از مفهوم Constructor کلاسهای پایتون بوده و برای شخصیسازی یک شی در زمان ایجاد آن به کار میرود و کاربرد معمول آن افزودن Attribute به شی است. در نمونه کد بالا، این متد یک پارامتر char دریافت میکند - این پارامتر مقدار پیشفرض ``*`` را دارد، بنابراین ارسال آرگومان متناظر برای آن اجباری نیست (تابع در پایتون - درس دوازدهم). با این کار میتوانیم در زمان نمونهسازی شی، یک Attribute با نام character در آن تعریف نماییم (سطر ۴). ما میخواهیم مقدار Attribute یا صفت character از هر شی را به تعداد دلخواه چاپ نماییم، از آنجا که این مقدار یک صفتِ متعلق به شی است و در ازای هر شی این مقدار میتواند متفاوت باشد پس ما برای این کار میبایست که یک Instance Method در بدنه کلاس تعریف کنیم (متد ``multiply_print`` ) - چرا که تنها در این صورت است که میتوانیم به ``self`` دسترسی داشته باشیم و مقدار صفت character را از آن دستیابی کنیم.
0 commit comments