تكرار السؤال: …
الإجابة المختصرة
يُعد الكائن falsy إذا عرّف __bool__ تعيد False، أو __len__ تعيد صفرًا؛ ومن القيم falsy المدمجة None و False و 0 و 0.0 والنص الفارغ والمجموعات الفارغة. كل ما عدا ذلك truthy.
الشرح
يسمح ذلك بكتابة if items: بدل if len(items) > 0. لكن احذر عندما تكون القيمة 0 أو نصًا فارغًا قيمة صالحة: if not quantity سيعامل الكمية صفر كأنها غير موجودة. في هذه الحالة افحص None صراحةً. عند تعريف class، عرّف __bool__ فقط عندما يكون لـ truthiness معنى واضح.
مثال بالكود
def apply_discount(price, discount=None):
if discount is None: # وليس: if not discount
return price
return price - discount # discount=0 قيمة صالحة
class Cart:
def __init__(self):
self.items = []
def __len__(self):
return len(self.items) # السلة الفارغة falsyأخطاء شائعة
- استخدام if not value للتحقق من None مما يرفض القيم الصالحة مثل 0 و "".
- مقارنة القوائم بـ == [] بدل الاعتماد على truthiness.