Python getattr()

في الدرس السابق تعلمنا حول أمر النظام في بايثون. في هذا الدرس، سنناقش حول وظيفة getattr() في بايثون.

تُستخدم وظيفة getattr() في بايثون للحصول على قيمة سمة الكائن، وإذا لم يتم العثور على سمة لهذا الكائن، يتم إرجاع القيمة الافتراضية. بشكل أساسي، إرجاع القيمة الافتراضية هو السبب الرئيسي للحاجة إلى استخدام وظيفة getattr() في بايثون. لذا، قبل بدء الدرس، دعنا نرى البنية الأساسية لوظيفة getattr() في بايثون.

getattr(object_name, attribute_name[, default_value])

مثال على وظيفة getattr() في بايثون

في هذا القسم، سنتعلم كيفية الوصول إلى قيم السمات لكائن باستخدام وظيفة getattr(). لنفترض، أننا نكتب صنفًا باسم Student. السمات الأساسية لصنف الطالب هي student_id و student_name. الآن سنقوم بإنشاء كائن من صنف الطالب والوصول إلى سمته.

class Student:
    student_id=""
    student_name=""

    # البناء الأساسي لتعيين القيم
    def __init__(self):
        self.student_id = "101"
        self.student_name = "Adam Lam"

student = Student()
# الحصول على قيم السمات باستخدام وظيفة getattr()
print('\ngetattr : name of the student is =', getattr(student, "student_name"))

# ولكن يمكنك الوصول إلى ذلك مثل هذا
print('traditional: name of the student is =', student.student_name)

قيمة افتراضية لـ Python getattr()

في هذا القسم، سنستخدم خيار القيمة الافتراضية لـ Python getattr(). إذا كنت ترغب في الوصول إلى أي سمة لا تنتمي إلى الكائن، فيمكنك استخدام خيار القيمة الافتراضية لـ getattr(). على سبيل المثال، إذا لم تكن السمة student_cgpa موجودة للطالب، ستظهر قيمة افتراضية. في المثال التالي، سنرى مثالاً على القيمة الافتراضية. سنتعلم أيضًا ما يحدث إذا لم تكن السمة موجودة ولم نكن نستخدم خيار القيمة الافتراضية.

class Student:
    student_id=""
    student_name=""

    # البناء الأولي لتعيين القيم
    def __init__(self):
        self.student_id = "101"
        self.student_name = "Adam Lam"

student = Student()
# استخدام خيار القيمة الافتراضية
print('Using default value : Cgpa of the student is =', getattr(student, "student_cgpa", 3.00))
# بدون استخدام قيمة افتراضية
try:
    print('Without default value : Cgpa of the student is =', getattr(student, "student_cgpa"))
except AttributeError:
    print("Attribute is not found :(")

لذا، بعد تشغيل الكود، ستحصل على مخرجات مثل هذه

Using default value : Cgpa of the student is = 3.0
Attribute is not found :(

لاحظ أنه يتم رفع استثناء AttributeError عندما لا يتم توفير القيمة الافتراضية أثناء استدعاء وظيفة getattr().

سبب استخدام وظيفة Python getattr()

السبب الرئيسي لاستخدام `getattr()` في Python هو أنه يمكننا الحصول على قيمة باستخدام اسم السمة كسلسلة. لذلك يمكنك إدخال اسم السمة يدويا في برنامجك من وحدة التحكم. مرة أخرى، إذا لم يتم العثور على السمة يمكنك تعيين بعض القيمة الافتراضية، مما يمكننا من استكمال بعض بياناتنا غير الكاملة. أيضًا، إذا كانت فئة Student قيد العمل، فيمكننا استخدام دالة `getattr()` لاستكمال الشفرة الأخرى. بمجرد أن تحتوي فئة Student على هذه السمة، ستقوم تلقائيًا بالتقاطها وعدم استخدام القيمة الافتراضية. إذاً، هذا كل شيء عن دالة `getattr()` في Python. إذا كان لديك أي استفسار حول هذا الموضوع، يرجى استخدام مربع التعليقات أدناه. المرجع: التوثيق الرسمي

Source:
https://www.digitalocean.com/community/tutorials/python-getattr