ساختن آبجکت

پرسیده شده
فعالیت 909 روز پیش
دیده شده 454 بار
0

سلام منمتوجه نمیشم چرا self رو تو ورودی هر def داریم چیکار میکنه و اگه نباشه چی میشه

فایل پیوست

علی بادپروا
علی بادپروا

6 آبان 00

0
حذف شده

سلاااااااااااااااام علی جان

 

یادآوری:

به عنوان یه برنامه نویس قبل پرسیدن سوال وظیفه تون هست که اول سرچ کنید، مقاله بخونید، ویدیو ببینید و بعد اگر باز هم نیاز به راهنمایی یا جواب دقیق تری داشتید تاپیک بزنید.

اگر این کارها رو انجام دادی همیشه تو تاپیک بگو که من فلان کار رو کردم، فلان مقاله رو خوندم ولی هنوز فلان قسمت رو درک نکردم. یا توضیح دقیق تر میخوام.

اگر هم این کارهایی که گفتم رو انجام ندادی توصیه میکنم اول بری انجام بدی و بعد جواب پایین رو بخونی.

موفق باشی :)

 

 

تو syntax زبان پایتون این قانون رو داریم که تمام ابجکت متد ها باید اولین ورودی شون خود ابجکت باشه که اسمش رو اکثرا self میذاریم.

ما برای کلاس 3 نوع متد میتونیم بنویسیم:

1. ابجکت متد (method or object method)

2. کلاس متد (classmethod)

3. استاتیک متد (staticmethod)

ابجکت متد ها اولین ورودی شون همیشه خود ابجکت هست. چون اون متدی که مینویسید مربوط به متد هست و احتمالا قراره تغییری توی متد، صفت هاش (attribute هاش) و هر چیز دیگه ای که مربوط به ابجکت هست بدید.

کلاس متد ها اولین ورودی شون همیشه خود کلاس هست و احتمالا تو اینطور متدها قراره کاری با خود کلاس یا ابجکت هاش بکنید. مثلا طبق دیزاین پترن فکتوری میخواهید یه ابجکت بسازید. یا اطلاعاتی از ابجکت های این کلاس بدید و امثالهم.

استاتیک متدها مثل نوع های قبلی که گفتم نیستن. اولین ورودی پیش فرض ندارن. تو این نوع متدها میخواهید یه کاری انجام بدید که احتمالا نیاز به خود اون ابجکت یا کلاس ندارید. و معمولا برای تمیز بودن کد و این که تابع رو با namespace کلاس میخواستید تعریف کنید اومدید از استاتیک متد استفاده کردید. مثلا توابع کمکی (utils)

 

اگر داخل متد نیازی به خود ابجکت نداری میتونی به صورت استاتیک متد تعریفش کنی.

کار خاصی نمیکنه. فقط چون ابجکت متد ها معمولا قراره یه کاری با خود ابجکت یا صفت هاش انجام بده، همیشه پایتون به عنوان اولین ورودی پاسش میده.

اگر نوع متد ات، ابجکت متد هست که خب باید اولین ورودیش خود ابجکت باشه. و اگر میخوای نباشه که باید استاتیک متد بنویسی.

فایل پیوست

محمدعلی رضا

توسط

محمدعلی رضا

6 آبان 00