0Pricing
Python Academy · درس

طرق الكائن وself

اكتب طرقاً تعمل على بيانات الكائن نفسه

طرق الكائن وself درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.

مقدمة

تعمل طرق المثيل على بيانات كائن محدد، وتستخدم self للوصول إلى سماته وتعديلها.

تعريف طرق المثيل

يُعد def method(self): داخل فئة طريقةَ مثيل. وتتلقى الكائن بوصفه الوسيط الأول (self).
class Circle:
    def __init__(self, r): self.r = r
    def area(self):
        import math
        return math.pi * self.r**2
print(Circle(5).area())

استدعاء الطرق

يُعد obj.method() صياغة مختصرة للتعبير ClassName.method(obj). تمرّر Python ‏obj بوصفه self تلقائيًا.
class Dog:
    def __init__(self, name): self.name = name
    def bark(self): print(f'{self.name} says Woof!')
Dog('Rex').bark()

الطرق التي تُعيد self

يتيح إرجاع self تسلسل استدعاءات الطرق: builder.set_name('x').set_age(3).build().
class Builder:
    def __init__(self): self.data = {}
    def set(self, k, v):
        self.data[k] = v
        return self
    def build(self): return self.data
result = Builder().set('x',1).set('y',2).build()
print(result)

الطرق الخاصة (وفق convention)

استخدم السابقة _ للإشارة إلى «الاستخدام الداخلي». وتؤدي السابقة __ إلى تعديل الاسم: _ClassName__method.
class Account:
    def __init__(self, bal): self._bal = bal
    def _validate(self, amount): return amount > 0
    def deposit(self, amount):
        if self._validate(amount):
            self._bal += amount
a = Account(100)
a.deposit(50)
print(a._bal)

الخصائص بوصفها طرقًا

تحوّل @property الطريقة إلى سمة سهلة القراءة. ولا تحتاج إلى أقواس عند الوصول إليها.
class Circle:
    def __init__(self, r): self.r = r
    @property
    def diameter(self): return self.r * 2
c = Circle(5)
print(c.diameter)  # no ()

تغيير الحالة

تغيّر الطرق التي تعدّل سمات self حالة الكائن. صمّم الطرق بنية واضحة: استعلام أم أمر.
class Stack:
    def __init__(self): self.items = []
    def push(self, x): self.items.append(x)
    def pop(self): return self.items.pop()
    def peek(self): return self.items[-1]
s = Stack()
s.push(1); s.push(2)
print(s.pop(), s.peek())

مقارنة الكائنات

يقارن == الهوية افتراضيًا. طبّق __eq__ للمقارنة حسب القيمة.
class Point:
    def __init__(self, x, y): self.x,self.y=x,y
    def __eq__(self, other): return self.x==other.x and self.y==other.y
print(Point(1,2)==Point(1,2))

بروتوكول التكرار

طبّق __iter__ و __next__ لجعل الفئة قابلة للتكرار، أي قابلة للاستخدام في حلقات for.
class Countdown:
    def __init__(self, n): self.n = n
    def __iter__(self): return self
    def __next__(self):
        if self.n <= 0: raise StopIteration
        self.n -= 1; return self.n + 1
print(list(Countdown(3)))

بروتوكول مدير السياق

طبّق __enter__ و __exit__ لجعل الفئة قابلة للاستخدام في عبارات with.
class Timer:
    def __enter__(self):
        import time
        self.start = time.time()
        return self
    def __exit__(self, *args):
        import time
        print(f'elapsed: {time.time()-self.start:.3f}s')
with Timer(): pass

الطريقة مقابل الدالة

عند الوصول إلى Dog.bark من خلال الفئة، تكون دالة عادية. أما d.bark من خلال مثيل، فهي طريقة مرتبطة؛ إذ تكون قيمة self مملوءة مسبقًا.
class Dog:
    def bark(self): print('woof')
print(type(Dog.bark))
print(type(Dog().bark))

تحقق سريع

ما تسلسل استدعاءات الطرق، وما الذي يجب أن تُعيده الطريقة لدعمه؟

مراجعة

طرق المثيل: def m(self). استدعها بصيغة obj.m(). أعد self لدعم التسلسل. وتطبّق __eq__/__iter__/__enter__/__exit__ البروتوكولات. وتشير السابقة _ إلى الاستخدام الداخلي.

واصل التقدم

ممتاز! تابع إلى الدرس التالي لتعميق مهاراتك.

الأسئلة الشائعة

هل درس «طرق الكائن وself» مجاني؟

نعم — نص درس «طرق الكائن وself» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.

ماذا ستتعلم في «طرق الكائن وself»؟

اكتب طرقاً تعمل على بيانات الكائن نفسه تتمرن على Python Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟

لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «طرق الكائن وself»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟

نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الفئات والطريقة __init__
  2. سمات الكائنات مقابل سمات الفئات
  3. طرق الكائن وself
  4. الطرق السحرية: __str__ و__repr__
← العودة إلى Python Academy