از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
دریافت تمام ویژگی های شی در پایتون
سرفصلهای مطلب
معرفی
در پایتون، همه چیز یک شی است – از اعداد صحیح و رشته ها گرفته تا کلاس ها و توابع. این ممکن است عجیب به نظر برسد، به خصوص برای انواع ابتدایی مانند اعداد، اما حتی آنهایی که دارای ویژگی هایی مانند اعداد هستند real
و imag
. هر شی دارای ویژگی های خاص خود است که اساساً ویژگی ها یا ویژگی هایی هستند که به تعریف شی کمک می کنند.
در این بایت، راههای مختلف برای دریافت تمام ویژگیهای یک شی در پایتون و روش نمایش و دستکاری موثر آنها را بررسی خواهیم کرد.
مشاهده ویژگی های شی
برای شروع، بیایید ببینیم چگونه می توانیم ویژگی های یک شی را در پایتون مشاهده کنیم. پایتون یک تابع داخلی ارائه می دهد، dir()
، که لیستی از تمام ویژگی ها و متدهای یک شی را برمی گرداند که شامل موارد به ارث رسیده از کلاس یا کلاس های والد آن نیز می شود.
یک کلاس ساده را در نظر بگیرید، Company
، با چند ویژگی:
class Company:
def __init__(self, name, industry, num_employees):
self.name = name
self.industry = industry
self.num_employees = num_employees
حال، بیایید یک نمونه از Company
و استفاده کنید dir()
برای بدست آوردن ویژگی های آن:
c = Company('Dunder Mifflin', 'paper', 15)
print(dir(c))
این خروجی خواهد داشت:
('__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'industry', 'num_employees', 'name')
همانطور که می بینید، dir()
نه تنها ویژگی هایی را که ما تعریف کرده بودیم (یعنی name
، industry
، num_employees
، بلکه لیستی از روش های خاص (همچنین به نام روش های dunder) ذاتی تمام اشیاء پایتون است.
به دست آوردن ارزش های آنها
اکنون که می دانیم چگونه ویژگی های یک شی را بدست آوریم، بیایید ببینیم که چگونه مقادیر آنها را نیز استخراج کنیم. پایتون یک تابع داخلی ارائه می دهد، getattr()
، که به ما امکان می دهد مقدار یک ویژگی خاص را بدست آوریم.
در اینجا روش استفاده شما آمده است getattr()
:
name = getattr(c, 'name')
print(name)
این خروجی خواهد داشت:
Dunder Mifflin
در این مثال، getattr()
مقدار the را برمی گرداند name
ویژگی از Company
نمونه، مثال c
. اگر صفت وجود نداشته باشد، getattr()
یک را بالا خواهد برد AttributeError
. با این حال، شما می توانید یک آرگومان سوم برای آن ارائه دهید getattr()
، که در صورت یافت نشدن ویژگی برگردانده می شود و از این طریق از خطا جلوگیری می کند:
location = getattr(c, 'location', 'Not available')
print(location)
این خروجی خواهد داشت:
Not available
در این مورد، از آنجایی که location
یک ویژگی نیست c
، getattr()
مقدار پیش فرض ارائه شده، “در دسترس نیست” را برمی گرداند.
استفاده کردن __دیکت__ برای دریافت خواص و ارزش ها
در پایتون، هر شی مجهز به a است __dict__
صفت. این ویژگی داخلی یک فرهنگ لغت است که ویژگی های شی را به مقادیر مربوطه آنها ترسیم می کند. وقتی میخواهیم تمام خصوصیات و مقادیر یک شی را استخراج کنیم، این میتواند بسیار مفید باشد. بیایید ببینیم چگونه کار می کند.
class TestClass:
def __init__(self):
self.attr1 = 'Hello'
self.attr2 = 'World'
instance = TestClass()
print(instance.__dict__)
هنگامی که کد بالا را اجرا می کنید، خروجی آن به شرح زیر خواهد بود:
{'attr1': 'Hello', 'attr2': 'World'}
توجه داشته باشید: __dict__
متدهای یک شی را بر نمی گرداند، فقط خواص و مقادیر آنها.
قالب بندی ویژگی های شی به رشته ها
گاهی اوقات ممکن است بخواهید ویژگی های یک شی را به یک رشته قابل خواندن برای اهداف نمایش یا گزارش گیری قالب بندی کنید. پایتون داخلی str
برای رسیدن به این هدف میتوان تابع را در کلاس شما نادیده گرفت. در اینجا روش انجام این کار آمده است:
class TestClass:
def __init__(self):
self.attr1 = 'Hello'
self.attr2 = 'World'
def __str__(self):
return str(self.__dict__)
instance = TestClass()
print(str(instance))
هنگامی که کد بالا را اجرا می کنید، خروجی آن به شرح زیر خواهد بود:
"{'attr1': 'Hello', 'attr2': 'World'}"
راه دیگر برای استخراج ویژگی ها از یک شی در پایتون استفاده از داخلی است vars()
تابع. این تابع بسیار شبیه به __dict__
ویژگی و برمی گرداند __dict__
ویژگی یک شی در اینجا یک مثال است:
class TestClass:
def __init__(self):
self.attr1 = 'Hello'
self.attr2 = 'World'
instance = TestClass()
print(vars(instance))
هنگامی که کد بالا را اجرا می کنید، خروجی آن به شرح زیر خواهد بود:
{'attr1': 'Hello', 'attr2': 'World'}
توجه داشته باشید: پسندیدن __dict__
، vars()
همچنین متدهای یک شی را بر نمی گرداند، فقط ویژگی ها و مقادیر آنها را برمی گرداند.
نتیجه
به دست آوردن تمام ویژگی های یک شی در پایتون به روش های مختلفی قابل دستیابی است. این که آیا شما استفاده می کنید dir()
، __dict__
صفت، نادیده گرفتن str
تابع، یا با استفاده از vars()
تابع، پایتون ابزارهای مختلفی را برای استخراج و دستکاری ویژگی های شی فراهم می کند.
(برچسبها به ترجمه)# python
منتشر شده در 1402-12-29 12:49:03