• 0

كيف يمكن ان اعلم اذا كائن ما لديه خاصية معينة ضمن البايثون

لدي هذا الكود اعطى خطأ و احتاج معرفة هل الكائن a لديه الخاصية property قبل ان استخدمها

a = SomeClass()
a.someProperty = value
a.property



Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: SomeClass instance has no attribute 'property'

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

يمكنك استخدام دالة

hasattr()

بهذا الشكل 

if hasattr(a, 'property'):
    a.property

ولكن إذا كنت تريد فقط قيمة attribute مع القيمة الافتراضية إذا لم تكن موجودة ، فإن الخيار الأفضل هو استخدام

getattr ()
getattr(a, 'property', 'default value')
property = getattr(a,"property",None)
    if property:
        print property

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

يمكننا استخدام الدالة dir التي تعيد قائمة list من الخصائص properties و الطرائق methods التي يملكها غرض ما:

if 'property' in dir(a):
    a.property

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

ما تريدنه قريب من هذه الخاصيات 

getattr– تُستخدم هذه الوظيفة للوصول إلى property خاصة بكائن.
hasattr- تُستخدم هذه الوظيفة للتحقق مما إذا كانت property موجودة أم لا.
setattr - تُستخدم هذه الوظيفة لتعيين property. إذا كانت property غير موجودة ، فسيتم إنشاؤها.
delattr - تُستخدم هذه الوظيفة لحذف property.

hasattr تتحقق وترجع boolean يشير تواجد أو عدم تواجد ال property 

class example:
    name = 'Salah'
    color: "white"


e1 = example()
print(getattr(e1, 'name'))

print(hasattr(e1, 'name'))

setattr(e1, 'age', 44)
print(getattr(e1, 'age'))

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

عادة يفضل اسخدام مع سبق مع try :
 

try:
    doStuff(a.property)
except AttributeError:
    otherStuff()

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن