تحويل الكائنات إلى تمثيل نصي باستخدام دالة repr() في Python

تمت الكتابة بواسطة: عبد الحكيم

تارخ آخر تحديث: 21 سبتمبر 2024

محتوى المقال

تحويل الكائنات إلى تمثيل نصي باستخدام دالة repr() في Python

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

مفهوم repr()

دالة repr() هي دالة مدمجة في Python تُستخدم للحصول على التمثيل النصي الرسمي لأي كائن. عادةً ما يتم استخدام هذا التمثيل من قبل المبرمجين لتقديم معلومات مفصلة ودقيقة حول الكائنات أثناء عملية التصحيح.

ببساطة، الهدف من repr() هو تقديم تمثيل نصي "رسمي" للكائن. من المفترض أن يُستخدم هذا التمثيل لإعادة بناء الكائن نفسه إذا تم تمريره إلى الدالة eval(). على عكس str()، الذي يعطي تمثيلاً أكثر ودية للمستخدم النهائي، يهدف repr() إلى تقديم تفاصيل دقيقة للمطورين.

الفرق بين repr() و str()

كثير من المطورين المبتدئين قد يخلطون بين repr() وstr()، وهما دالتان تبدوان متشابهتين ولكنهما تُستخدمان في حالات مختلفة:

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

لفهم الفرق بشكل أفضل، دعونا نلقي نظرة على مثال يوضح الفارق بين repr() و str().

x = 'Hello, World!'
print(str(x)) # الناتج: Hello, World!
print(repr(x)) # الناتج: 'Hello, World!'

في المثال أعلاه، نلاحظ أن str(x) يعطينا التمثيل المباشر للنص بينما repr(x) يعطينا التمثيل الرسمي الذي يشمل علامات الاقتباس الفردية.

استخدام repr() في الكائنات المعرفة من قبل المستخدم

في Python، يمكننا استخدام repr() مع أي كائن تقريبًا، بما في ذلك الكائنات المعرفة من قبل المستخدم. عند تعريف كائن جديد باستخدام الفئات (Classes)، يمكننا تخصيص كيفية عرض الكائن عند استدعاء repr() من خلال تعريف الدالة الخاصة __repr__().

لنأخذ المثال التالي الذي نعرف فيه فئة لتمثيل كتاب:

class Book:
    def __init__(self, title, author, year):
        self.title = title
        self.author = author
        self.year = year

    def __repr__(self):
        return f"Book({self.title!r}, {self.author!r}, {self.year!r})"

# إنشاء كائن جديد من الفئة
my_book = Book('1984', 'George Orwell', 1949)

print(repr(my_book)) # الناتج: Book('1984', 'George Orwell', 1949)

في المثال أعلاه، عرفنا دالة __repr__() الخاصة بفئة Book، بحيث تعطي تمثيلاً نصيًا دقيقًا للكائن. هذا التمثيل يشمل تفاصيل العنوان، المؤلف، وسنة النشر بطريقة تمكن المبرمج من فهم الكائن بسهولة.

متى نستخدم repr()؟

هناك العديد من الحالات التي يكون فيها استخدام repr() ضروريًا أو مفيدًا:

  • عند تطوير التطبيقات التي تحتاج إلى تتبع وتحليل الكائنات في الخلفية.
  • في أنظمة التصحيح (Debugging)، حيث يمكن للمطورين رؤية التمثيل النصي الدقيق للكائنات.
  • عند العمل مع بيانات معقدة مثل القوائم، القواميس أو الكائنات المخصصة، حيث يمكن لـ repr() توفير تفاصيل إضافية مهمة.

أمثلة على استخدام repr() مع أنواع مختلفة من البيانات

إليك بعض الأمثلة لاستخدام repr() مع أنواع البيانات الأساسية في Python:

مثال 1: تمثيل القوائم

my_list = ['apple', 'banana', 'cherry']
print(repr(my_list)) # الناتج: ['apple', 'banana', 'cherry']

هنا، repr() يوفر تمثيلاً نصيًا دقيقًا للقائمة، بما في ذلك الأقواس المربعة والفواصل بين العناصر.

مثال 2: تمثيل القواميس

my_dict = {'name': 'John', 'age': 30}
print(repr(my_dict)) # الناتج: {'name': 'John', 'age': 30}

في القواميس، يعرض repr() المفاتيح والقيم بتفاصيل دقيقة مع الفواصل المعهودة والأقواس المربعة.

الخلاصة

دالة repr() في Python هي أداة قوية لتوفير تمثيل نصي دقيق للكائنات. يمكن استخدامها في التصحيح، وفي أي حالة تحتاج فيها إلى تمثيل رسمي وموثوق للكائنات. من خلال فهم الفرق بين repr() و str()، يمكنك تحسين شفرتك البرمجية وجعل عملية التصحيح أسهل وأكثر فاعلية.

طور مهاراتك: مقالات يجب قراءتها في البرمجة