وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

دریافت تمام ویژگی های شی در پایتون

0 7
زمان لازم برای مطالعه: 3 دقیقه


معرفی

در پایتون، همه چیز یک شی است – از اعداد صحیح و رشته ها گرفته تا کلاس ها و توابع. این ممکن است عجیب به نظر برسد، به خصوص برای انواع ابتدایی مانند اعداد، اما حتی آنهایی که دارای ویژگی هایی مانند اعداد هستند 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) ذاتی تمام اشیاء پایتون است.

پیشنهاد می‌کنیم بخوانید:  باز کردن چندین فایل با استفاده از "with open" در پایتون

به دست آوردن ارزش های آنها

اکنون که می دانیم چگونه ویژگی های یک شی را بدست آوریم، بیایید ببینیم که چگونه مقادیر آنها را نیز استخراج کنیم. پایتون یک تابع داخلی ارائه می دهد، 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__ متدهای یک شی را بر نمی گرداند، فقط خواص و مقادیر آنها.

پیشنهاد می‌کنیم بخوانید:  روش فیلتر کردن یک شی با کلید در جاوا اسکریپت اشیاء جاوا اسکریپت مانند آرایه ها یا رشته ها قابل تکرار نیستند، بنابراین نمی توانیم مستقیماً از متد filter() استفاده کنیم. روی یک شی filter() به ما امکان می دهد از طریق یک آرایه تکرار کنیم و فقط آیتم های آن آرایه که با معیارهای خاصی مطابقت دارند را به یک آرایه جدید برمی گرداند. اگر می خواهید به ...

قالب بندی ویژگی های شی به رشته ها

گاهی اوقات ممکن است بخواهید ویژگی های یک شی را به یک رشته قابل خواندن برای اهداف نمایش یا گزارش گیری قالب بندی کنید. پایتون داخلی 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

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید