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

التابع السحري __len__ في Python

Hanan Fahad2

السؤال

def __len__

ابغا افهم ليش تستخدم هذي ليش   مانستخدم 
len 

ابغا افهم فكرتها دورت عنها ماحصلت 

تم التعديل في بواسطة سمير عبود
تعديل العنوان
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

الدالة len تستخدم التابع __len__ في حالة تواجده لإرجاع طول الكائن كما تم تعريفه في التابع:

مثال:

class Me:
    
    pass

a = Me()

print(len(a))

المثال السابق سيُعطي خطأ بالشكل التالي:

TypeError: object of type 'Me' has no len()

بمعنى الغرض من النوع Me لا يملك طول.

يُمكننا أن نجعل للغرض طول عبر تعريف التابع __len__ في الكلاس و سيتم إستدعاؤه عند إستدعاء الدالة len:

class Me:
    
    def __len__(self):
        return 5

a = Me()

print(len(a)) # 5

مثلاً يُمكننا إنشاء كلاس Person و نجعل الدالة len عند إستعمالها مع كائنات هذا الصنف تُعيد عدد أحرف إسم الشخص بالشكل التالي:

class Person:
    
    def __init__(self, name):
        self.name = name
    
    def __len__(self):
        return len(self.name)


print(len(Person("Samir"))) # 5
print(len(Person("Hanan Fahad"))) # 11
print(len(Person("John Doe"))) # 8

و بطبيعة الحال إن لم يكن التابع __len__ مُعرف سيُعطي خطأ عند إستعمال الدالة len على هذه الكائنات.

يُمكننا إستخدام التابع __len__ مُباشرة لكنه غير مريح للعين، بعكس الدالة len:

fruits = ["apple", "banana", "cherry"]

print(len(fruits)) # 3
print(fruits.__len__()) # 3
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

دالة `__len__` تُستخدم في لغة Python لتعريف طريقة لاسترداد طول (عدد العناصر) لكائن معين من الصنف (class) عند استخدام دالة `len()`.

عندما تستدعى دالة `len()` على كائن ما، فإن Python يحاول استدعاء دالة `__len__()` المعرفة داخل الكائن. وبالتالي، يمكنك تعريف دالة `__len__()` داخل صنفك الخاص لتحديد كيفية استرداد طول الكائن عند استخدام `len()`.

على سبيل المثال، إذا كنت ترغب في تعريف صنف لقائمة مخصصة، يمكنك استخدام دالة `__len__()` لتحديد طول القائمة عند استخدام `len()`:

class MyList:
    def __init__(self):
        self.items = []

    def __len__(self):
        return len(self.items)

my_list = MyList()
my_list.items = [1, 2, 3, 4, 5]

print(len(my_list))  # سيطبع: 5

في هذا المثال، تم تعريف دالة `__len__()` داخل صنف `MyList` لتسترد طول القائمة `items` عند استخدام `len(my_list)`.

بالمقابل، دالة `len()` تستخدم لاسترداد طول الهيكل البيانات المدمجة في Python مثل القوائم والسلاسل والمجموعات والقواميس. ولكن عند استخدام `len()` مع صنف مخصص، فإن Python يحاول استدعاء دالة `__len__()` المعرفة داخل الكائن بدلاً من استخدام `len()` المعينة مسبقًا.

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

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...