دریافت نام کلاس در پایتون

امیرحسین بیگدلو 2 هفته قبل

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

در زمان کدنویسی، گاهی نیاز است تا نام کلاس را پیدا کنیم. مثلا در زمان پیاده سازی متدها __str__ یا __repr__ نمایش نام کلاس بسیار مرسوم است. برای پیدا کردن نام کلاس در پایتون دو روش ساده وجود دارد. روش اول استفاده از متد type و روش دوم استفاده از اتریبیوت __class__ است. این دو آبجکت کلاس را نمایش میدهند که اگر بخواهید نام کلاس را به شکل یک رشته داشته باشید، میتوانید از __name__ در کنار این دو روش استفاده کنید.

ویدیو پیشنهادی: ویدیو آموزش تفاوت بین str و repr در پایتون

# متد type برای گرفتن نام کلاس پایتون

اولین روش برای پیدا کردن نام کلاس در پایتون استفاده از متد type است. تابع type نوع داده آبجکتی که به عنوان آرگومان به آن ارسال کرده اید را نمایش میدهد. هنوز هم اگر بخواهید نام کلاس را به شکل یک رشته دریافت کنید باید از اتریبیوت __name__ استفاده کنید. در مثال زیر نام کلاس های داخلی پایتون را پیدا میکنیم:

>>> a = 45
>>> type(a).__name__
'int'
>>> b = 'example'
>>> type(b).__name__
'str'
>>> c = True
>>> type(c).__name__
'bool'
>>> d = [1, 2, 3]
>>> type(d).__name__
'list'
>>> e = {1: 'abc'}
>>> type(e).__name__
'dict'

همچنین این روش با کلاس هایی که توسط کاربر ایجاد شده اند نیز کار میکند. در اینجا یک آبجکت از کلاس Book را به تابع type ارسال کردیم و نام کلاس را دریافت میکنیم:

class Book:
  def __init__(self, name):
    self.name = name
book = Book("The Hitchhiker's Guide to the Galaxy")
print(type(book).__name__)  # Book

همانطور که مشخص است، با ترکیب type و __name__ توانستیم نام کلاس را پیدا کنیم.

ویدیو پیشنهادی: رشته(string) در پایتون

# اتریبیوت __class__ برای پیدا کردن نام کلاس پایتون

روش دیگری که میتوانید برای پیدا کردن نام کلاس استفاده کنید، اتریبیوت __class__ است. __class__ یک ویژگی روی آبجکت است که به کلاسی که آبجکت از آن ساخته شده است اشاره میکند. از آنجایی که این ویژگی آبجکت کلاس را برمیگرداند، مجبور هستید آن را با __name__ ترکیب کنید تا نام کلاس به شکل یک رشته دریافت شود.

از همان مثال قبل دوباره استفاده میکنیم تا نحوه کار را __class__ نمایش دهیم:

>>> a = 45
>>> a.__class__.__name__
'int'

>>> b = 'example'
>>> b.__class__.__name__
'str'

>>> c = True
>>> c.__class__.__name__
'bool'

>>> d = [1, 2, 3]
>>> d.__class__.__name__
'list'

>>> e = {1: 'abc'}
>>> e.__class__.__name__
'dict'

همچنین میتوانید از __class__ به روی کلاس هایی که توسط کاربر ایجاد شده اند استفاده کنید:

class Book:
  def __init__(self, name):
    self.name = name

book = Book("The Hitchhiker's Guide to the Galaxy")
print(book.__class__.__name__)  # Book

دقیقا مشابه قبل، نام کلاس را دریافت کردیم.

مطالب مشابه



مونگارد