آموزش کلاس‌های تودرتو در پایتون

December 2021

ویدیوهای پیشنهادی:

ویدیو آشنایی عمیق با function در پایتون

ویدیو آموزش حرفه‌ای دکوراتورها در پایتون

 

 #  کلاس‌های تودرتو در پایتون

در این ویدیو با کلاس‌های تودرتو در پایتون آشنا میشوید. nested classes به کلاس‌های گفته میشود که داخل یکدیگر باشند. کلاس‌هایی که فکر میکنید عملکرد مشابهی دارند را میتوانید داخل یکدیگر بسازید. استفاده از این نوع کلاس‌ها در پایتون آنچنان مرسوم نیست و کمتر جایی میتوانید کلاس‌های تودرتو را ببینید.

 

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

 

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

class One:
	class Two:
		class Three:
			class Four:
				class Five:
					pass

 

دقت کنید که واقعا نیازی نیست عمق کلاس‌های تودرتو بیشتر از 1 باشد.

 

در کلاس‌های تودرتو، کلاس بیرونی(outer) میتواند به کلاس داخلی(inner) دسترسی داشته باشد اما کلاس داخلی نمیتواند به کلاس بیرونی دسترسی داشته باشد. برای اینکه بتوانید از کلاس بیرونی به کلاس درونی دسترسی داشته باشید باید از self استفاده کنید:

class One:
	def show1(self):
		t = self.Two()
		t.show2()
	
	class Two:
		def show2(self):
			print('i am inner class')

o = One()
o.show1()

 

در کد بالا، متد show1 با استفاده از self به کلاس داخلی دسترسی داشته و از آن یک آبجکت میسازد.

 

دوره پیشنهادی: دوره آموزش پایتون (python)

 

شما نمیتوانید به طور مستقیم به کلاس داخلی دسترسی داشته باشید، اما اگر نیاز شد که این کار را انجام دهید باید از کلاس بیرونی عبور کنید:

class One:
	class Two:
		def show2(self):
			print('i am inner class')

t = One().Two()
t.show2()

 

برای ساخت آبجکت از کلاس داخلی، از طریق کلاس بیرونی به کلاس داخل دسترسی پیدا کردیم.

ارسال نظر

تلاش میکنم سوالات شما را در کمتر از یک روز پاسخ بدم

محسن سالاری

December 2021

تو جنگو ادمین بدرد بخور هست

پاسخ به نظر