اذهب إلى المحتوى

السؤال

نشر

السلام عليكم ورحمة الله وبركاته

ما وظيفة هذا التابع في البايثون.

def __str__():
  pass

Recommended Posts

  • 0
نشر

إحدى الدوال السحرية في بايثون والتي تسمى Magic  أو Dunder Methods وهي خاصة بالكلاسات، وتلك الدالة وظيفتها تحديد كيف يظهر الكائن عند تحويله إلى نص أو عند طباعته بصيغة سهلة ومفهومة للمستخدم العادي.

بمعنى تفقد التالي بدون str:

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

book = Book("مقدمة ابن خلدون", "ابن خلدون")
print(book)

حيث يتم تنفيذ الكود الموجود داخل __str__ تلقائياً في الحالات التالية:

  1. عند استخدام دالة الطباعة: print(Car)
  2. عند تحويل الكائن لنص صراحة: str(Car)
  3. داخل نصوص التنسيق (f-strings): مثل f"النتيجة: {Car}"

لكن المعامل self داخل الصنف يجب أن يستقبل التابع المعامل self على الأقل:

def __str__(self):

ويجب أن يعيد التابع قيمة نصية عبر return حصراً، وإلا سيحدث خطأ أي لا يكفي وضع pass.

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

    def __str__(self):
        return f"كتاب '{self.title}' للكاتب {self.author}"

book = Book("مقدمة ابن خلدون", "ابن خلدون")
print(book)

 

  • 0
نشر

التابع __str__ في لغة بايثون وظيفته الاساسية هي تحديد كيف سيظهر الكائن عند تحويله الى نص او عند طباعته، فبدلا من ان تظهر معلومات تقنية عن مكان الكائن في الذاكرة، يمكنك استخدام هذا التابع لارجاع وصف نصي واضح يسهل عليك فهم محتويات الكائن. عندما تستدعي print او str على الكائن، يقوم بايثون بالبحث عن هذا التابع داخل class الخاص بك وتنفيذه، ويجب ان تضعه داخل class وياخذ parameter يسمى self، كما يجب ان ينتهي دائما بجملة return ترجع قيمة نصية كما في هذا المثال.

class MyClass:

    def __str__(self):

        return "وصف الكائن هنا"
  • 0
نشر

وعليكم السلام ورحمة الله وبركاته,

ببساطة التابع __str__ وظيفته تحديد التمثيل النصي للكائن  عندما يتم تحويله إلى نص، بمعنى عند استخدام الدالة str() أو print() . وللتوضيح أكثر إليك المثال التالي 

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"الاسم: {self.name}, العمر: {self.age}"

p = Person("أحمد", 25)
print(p)  # سيطبع: الاسم: أحمد, العمر: 25

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...