cls و self

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

سلام خسته نباشید خدمت همه ی دوستان سوالی پیش اومده برای من اینکه ما گفتیم که cls رو زمانی بکار میبریم که کلاس متود باشه ولی استاد تو نوشتن manager به عنوان ورودی cls داد ولی دکوراتور classmethod رو صدا نزده بود ! راستیت متوجه نشدم اگه میشه توضیح بدین خیلی ممنون !

فایل پیوست

محمد یارمحمدی
محمد یارمحمدی

30 مرداد 00

2
حذف شده

سلاااااااااااااااام محمد جان

ممنون خداقوت

لطفا دقیقاتر بفرمایین کجای جلسه رو میگید؟ دقیقه چندش؟ استاد چه کدی نوشتن؟

منظورتون دقیقه ۱۶ هست که استاد کد زیر رو نوشتن:

	@classmethod
	def set_manager(cls):
		if cls.manager is None:
			cls.manager = Manager(cls)

ببینید وقتی متدی داریم تعریف میکنیم اگر بخواهیم متد برای کلاس باشه. توی تعریف اون متد، متد رو با دکوریتور classmethod میپوشونیم. و اولین آرگومان ورودی اون متد میشه خود کلاس که معمولا اسمش رو cls میذاریم.

حالا کلاس BaseClass به صورت انتزاعی ABS (abstract) تعریف شده یعنی قراره ازش ارث بری کنیم و نمیخواهیم ازش ابجکتی بسازیم.

کلاس هایی که از BaseClass ارث بری میکنن، یه متد به ارث میبرن به اسم set_manager که با صدا زدنش فقط یه بار یه ابجکت از Manager با آرکومان ورودی cls میسازیم که cls اسم اون کلاسی هست که ارث بری کرده مثلا ApartmentSell 

وقتی کلاس Manager رو صدا میزنیم در واقع متد init اش رو صدا زدیم. و cls (اون کلاس) رو به عنوان آرگومان ورودی به init پاس دادیم. که یه ارتباط دوطرفه ای برقرار بشه.

 

امیدوارم واضح و شفاف توضیح داده باشم.

باز اگر سوالی داشتی در خدمتم :)

فایل پیوست

محمدعلی رضا

توسط

محمدعلی رضا

30 مرداد 00