الفكرة ببساطة
الكلاس يصف البيانات والأفعال اللي يقدر عليها الكائن. لما تنشئ كائنين من الكلاس نفسه، كل واحد ممكن يحتفظ بقيم مختلفة.
في بايثون، self يشير إلى الكائن اللي استدعى الدالة. تعديل self.count يغير عداد هذا الكائن.
مثال محلول
عندنا عدادان. زد الأول مرة والثاني مرتين.
class Counter:
def __init__(self):
self.count = 0
def increment(self):
self.count += 1
a, b = Counter(), Counter()
a.increment()
b.increment()
b.increment()
print(a.count, b.count)تطبع 1 2. كل استدعاء لـ Counter أنشأ كائنا له عداد مستقل.
انتبه لهالنقطة
إذا كتبت b = a صار الاسمان يشيران لنفس الكائن. إنشاء كائن ثاني يحتاج استدعاء Counter مرة ثانية.
جرّب بنفسك
إذا نفذت a.increment() مرة إضافية بعد المثال، وش قيمتا a.count وb.count؟
اعرض الإجابة
القيمتان 2 و2. عداد a زاد من 1 إلى 2، وعداد b بقي 2.