Python للذكاء الاصطناعي متوسط · Intermediate 15 دقيقة

البرمجة الكائنية

Object-Oriented Programming

الأصناف والكائنات والسمات والدوال، والوراثة كما تظهر في مكتبات الذكاء الاصطناعي.

تقدّمك في المسار0%

الصنف والكائن

class Dataset:
    def __init__(self, name, samples):
        self.name = name          # سمة
        self.samples = samples

    def size(self):               # دالة (method)
        return len(self.samples)

ds = Dataset("iris", [1, 2, 3])
print(ds.name, ds.size())         # iris 3

self يشير إلى الكائن الحالي، ويُمرر تلقائياً عند الاستدعاء.

الوراثة

class ImageDataset(Dataset):
    def __init__(self, name, samples, size_px):
        super().__init__(name, samples)
        self.size_px = size_px

    def describe(self):
        return f"{self.name}: {self.size()} صور بحجم {self.size_px}"

super() تستدعي دوال الصنف الأصلي.

الدوال الخاصة

دوال تبدأ وتنتهي بشرطتين سفليتين تتيح دمج الصنف مع اللغة:

class Vector:
    def __init__(self, x, y):
        self.x, self.y = x, y
    def __add__(self, other):
        return Vector(self.x + other.x, self.y + other.y)
    def __repr__(self):
        return f"Vector({self.x}, {self.y})"

Vector(1, 2) + Vector(3, 4)   # Vector(4, 6)

__len__ و__getitem__ تجعلان الكائن يدعم len() والفهرسة، وهذا ما يطلبه صنف Dataset في PyTorch.

البرمجة الكائنية في الذكاء الاصطناعي

import torch.nn as nn

class TinyNet(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc = nn.Linear(4, 3)
    def forward(self, x):
        return self.fc(x)

تعرّف الطبقات في __init__ وتحدد طريقة الحساب في forward. الفهم الجيد للأصناف والوراثة يجعل قراءة هذه الشيفرات طبيعية.

مصطلحات الدرس

الصنف Class
قالب يصف بيانات وسلوك مجموعة من الكائنات.
الكائن Object
نسخة محددة تُنشأ من صنف ولها قيم سماتها الخاصة.
الوراثة Inheritance
آلية تسمح لصنف فرعي بأخذ سمات صنف أصلي ودواله مع إمكانية توسيعها أو تعديلها.

الملخص

البرمجة الكائنية تنظم الشيفرة حول أصناف (classes) تجمع البيانات (السمات) والسلوك (الدوال). يُنشأ الكائن من الصنف وتهيئه الدالة __init__، وتتيح الوراثة (inheritance) بناء صنف جديد يوسع صنفاً موجوداً. هذا النمط أساسي في مكتبات مثل PyTorch حيث يرث النموذج من nn.Module.

أسئلة مراجعة

  1. ما دور self في دوال الصنف؟

    تشير إلى الكائن الحالي الذي استُدعيت عليه الدالة، ومن خلالها نصل إلى سماته.

  2. ما فائدة الوراثة؟

    إعادة استخدام سلوك صنف موجود وتوسيعه دون تكرار الشيفرة.

المصادر والمراجع

  1. Classes — Python documentation
  2. Build the Neural Network — PyTorch Tutorials

إكمال الدرس