سرمایه گذاری متفاوت در سال نو 🍎🌱 ۳۵٪ تخفیف نوروزی ➕ حضور رایگان در مسترمایند نخبگان صنعت نرم‌افزار 💻✅
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ محمد یارمحمدی
cls و self
محمدعلی رضا حل شده توسط محمدعلی رضا

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

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

ممنون خداقوت

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

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

	@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 پاس دادیم. که یه ارتباط دوطرفه ای برقرار بشه.

 

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

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

بهترین پاسخ
محمدعلی رضا ۳۰ مرداد ۱۴۰۰، ۱۷:۱۷