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

سرور مجازی NVMe

بررسی کنید که آیا یک شی در پایتون دارای ویژگی است یا خیر

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


معرفی

در پایتون، همه چیز یک شی است و هر شی دارای ویژگی هایی است. این ویژگی ها می توانند متدها، متغیرها، انواع داده ها و … باشند. اما چگونه بفهمیم یک شی چه ویژگی دارد؟

در این بایت، در مورد اهمیت بررسی ویژگی‌ها در اشیاء پایتون و چگونگی انجام این کار بحث خواهیم کرد. ما هم لمس می کنیم روی را AttributeError و روش رسیدگی به آن

چرا ویژگی ها را بررسی کنیم؟

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

AttributeError در پایتون

AttributeError یک استثنا داخلی در پایتون است که وقتی سعی می‌کنید به یک ویژگی دسترسی داشته باشید یا آن را فراخوانی کنید که یک شی ندارد، ایجاد می‌شود. در اینجا یک مثال ساده آورده شده است:

class TestClass:
    def __init__(self):
        self.x = 10

test_obj = TestClass()
print(test_obj.y)

کد بالا یک را افزایش می دهد AttributeError زیرا شی test_obj ویژگی ندارد y. خروجی خواهد بود:

AttributeError: 'TestClass' object has no attribute 'y'

این خطا را می توان با بررسی اینکه آیا یک شی دارای ویژگی خاصی است قبل از تلاش برای دسترسی به آن جلوگیری کرد.

پیشنهاد می‌کنیم بخوانید:  برنامه های تک صفحه ای با Vue.js و Flask: مدیریت ایالت با Vuex. از اینکه برای پست سوم به من پیوستید متشکریم روی استفاده از Vue.js و Flask برای توسعه وب تمام پشته. موضوع اصلی در این پست خواهد بود روی با استفاده از Vuex برای مدیریت وضعیت در برنامه ما. برای معرفی Vuex، روش بازسازی کامپوننت های Home و Survey را از...

چگونه بررسی کنیم که آیا یک شی دارای ویژگی است یا خیر

پایتون چند راه برای بررسی اینکه آیا یک شی دارای ویژگی خاصی است ارائه می دهد. یکی از راه ها استفاده از داخلی است hasattr() تابع، و دیگری استفاده از a try/except مسدود کردن.

با استفاده از تابع hasattr()

ساده ترین راه برای بررسی اینکه آیا یک شی دارای ویژگی خاصی در پایتون است یا خیر، استفاده از داخلی است hasattr() تابع. این تابع دو پارامتر را می گیرد: شی و نام مشخصه ای که می خواهید بررسی کنید (در قالب رشته) و برمی گرداند. True اگر صفت وجود داشته باشد، False در غیر این صورت.

در اینجا روش استفاده شما آمده است hasattr():

class MyClass:
    def __init__(self):
        self.my_attribute = 42

my_instance = MyClass()

print(hasattr(my_instance, 'my_attribute'))  
print(hasattr(my_instance, 'non_existent_attribute'))  

در مثال بالا، hasattr(my_instance, 'my_attribute') برمی گرداند True زیرا my_attribute در واقع یک ویژگی است my_instance. از سوی دیگر، hasattr(my_instance, 'non_existent_attribute') برمی گرداند False زیرا non_existent_attribute یک ویژگی نیست my_instance.

با استفاده از try/به جز Block

راه دیگر برای بررسی یک ویژگی استفاده از a است try/except مسدود کردن. می توانید سعی کنید به ویژگی در داخل دسترسی پیدا کنید try مسدود کردن. اگر ویژگی وجود نداشته باشد، پایتون یک علامت را افزایش می دهد AttributeError که می توانید در آن بگیرید except مسدود کردن.

در اینجا یک مثال است:

class MyClass:
    def __init__(self):
        self.my_attribute = 42

my_instance = MyClass()

try:
    my_instance.my_attribute
    print("Attribute exists!")
except AttributeError:
    print("Attribute does not exist!")

در این مثال، اگر my_attribute وجود دارد، کد در try بلوک بدون هیچ مشکلی اجرا می شود و “ویژگی وجود دارد!” چاپ خواهد شد. اگر my_attribute وجود ندارد، AttributeError مطرح خواهد شد و “ویژگی وجود ندارد!” چاپ خواهد شد.

توجه داشته باشید: در حالی که این روش کار می کند، معمولاً استفاده از استثناها برای کنترل جریان در پایتون توصیه نمی شود. استثناها باید برای موارد استثنایی استفاده شوند، نه برای بررسی های مشروط منظم.

پیشنهاد می‌کنیم بخوانید:  آموزش تجارت الگوریتمی با استفاده از پایتون

بررسی چندین ویژگی

اگر نیاز به بررسی چندین ویژگی دارید، می توانید به سادگی استفاده کنید hasattr() چندین بار. با این حال، اگر می خواهید بررسی کنید که آیا یک شی همه یا هر یک از لیست ویژگی ها را دارد، می توانید از داخلی استفاده کنید all() یا any() عملکرد در ترکیب با hasattr().

در اینجا یک مثال است:

class MyClass:
    def __init__(self):
        self.attr1 = 42
        self.attr2 = 'Hello'
        self.attr3 = None

my_instance = MyClass()

attributes = ('attr1', 'attr2', 'attr3', 'non_existent_attribute')

print(all(hasattr(my_instance, attr) for attr in attributes))  
print(any(hasattr(my_instance, attr) for attr in attributes))  

در این کد، all(hasattr(my_instance, attr) for attr in attributes) برمی گرداند False زیرا همه صفات در لیست وجود ندارند my_instance. با این حال، any(hasattr(my_instance, attr) for attr in attributes) برمی گرداند True زیرا حداقل یک ویژگی در لیست وجود دارد my_instance.

نتیجه

در این بایت، راه‌های مختلفی را برای بررسی اینکه آیا یک شی دارای ویژگی خاصی در پایتون است را بررسی کرده‌ایم. ما یاد گرفتیم که چگونه از آن استفاده کنیم hasattr() تابع، روش استفاده از a try/except مسدود کردن برای گرفتن AttributeErrorو روش بررسی چندین ویژگی با استفاده از all() یا any().

(برچسب‌ها به ترجمه)# python



منتشر شده در 1402-12-28 16:52:06

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

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

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