دليل المبتدئين لفئات وكائنات Python

بايثون هي لغة برمجة موجهة للكائنات، مما يعني أنها تسمح لك بإنشاء الكائنات وإدارتها. الكائن هو مثيل لفئة، وهي عبارة عن مخطط لإنشاء الكائنات. يعد فهم الفئات والكائنات أمرًا أساسيًا لإتقان بايثون، لأنه يوفر نهجًا منظمًا للبرمجة. ستقدم لك هذه المقالة فئات وكائنات بايثون، وكيفية تعريفها، وكيفية استخدامها بشكل فعال في الكود الخاص بك.

ما هو الفصل؟

الفئة في بايثون هي مخطط لإنشاء الكائنات. وهي تحدد مجموعة من السمات والطرق التي ستحتوي عليها الكائنات التي تم إنشاؤها. السمات هي متغيرات تحتوي على بيانات، في حين أن الطرق هي وظائف تحدد سلوك الكائن. يمكن تعريف الفئة باستخدام الكلمة الأساسية class متبوعة باسم الفئة وعلامة النقطتين.

# Defining a simple class
class Dog:
    # Class attribute
    species = "Canis familiaris"

    # Initializer / Instance attributes
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # Instance method
    def description(self):
        return f"{self.name} is {self.age} years old"

    # Another instance method
    def speak(self, sound):
        return f"{self.name} says {sound}"

ما هو الشيء؟

الكائن هو مثيل لفئة. عند تعريف فئة، لا يتم تخصيص أي ذاكرة حتى يتم إنشاء كائن من تلك الفئة. يتضمن إنشاء الكائن استدعاء الفئة كما لو كانت دالة. يمكنك بعد ذلك الوصول إلى سمات الفئة وطرقها من خلال الكائن باستخدام تدوين النقاط.

# Creating an object of the Dog class
my_dog = Dog("Buddy", 5)

# Accessing attributes and methods
print(my_dog.description())  # Output: Buddy is 5 years old
print(my_dog.speak("Woof"))  # Output: Buddy says Woof

طريقة __init__

طريقة __init__ هي طريقة خاصة في بايثون، تُعرف أيضًا باسم المنشئ. يتم استدعاؤها تلقائيًا عند إنشاء مثيل جديد من الفئة. تُستخدم طريقة __init__ لتهيئة سمات الفئة. يتم تعريفها باستخدام الكلمة الأساسية def، متبوعة باسم الطريقة __init__ وself، والتي تشير إلى مثيل الفئة.

# Example of using the __init__ method
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

# Creating an object of the Person class
person1 = Person("Alice", 30)
print(person1.name)  # Output: Alice
print(person1.age)   # Output: 30

سمات المثيل مقابل سمات الفئة

يمكن تعريف السمات في بايثون على مستوى الفصل أو على مستوى المثيل. يتم مشاركة سمات الفصل بين جميع مثيلات الفصل، في حين تكون سمات المثيل خاصة بكل مثيل. يتم تعريف سمات الفصل مباشرة في الفصل، في حين يتم تعريف سمات المثيل داخل الطرق، عادةً داخل طريقة __init__.

# Example of class and instance attributes
class Car:
    # Class attribute
    wheels = 4

    def __init__(self, color, brand):
        # Instance attributes
        self.color = color
        self.brand = brand

# Creating objects of the Car class
car1 = Car("Red", "Toyota")
car2 = Car("Blue", "Honda")

print(car1.wheels)  # Output: 4
print(car2.wheels)  # Output: 4
print(car1.color)   # Output: Red
print(car2.color)   # Output: Blue

الأساليب في فئات بايثون

الأساليب هي وظائف محددة داخل فئة تصف سلوكيات الكائنات. هناك أنواع مختلفة من الأساليب في فئات بايثون:

  • طرق المثيلات: هذه هي أكثر أنواع الطرق شيوعًا التي تعمل على مثيل من الفئة. يمكنها تعديل حالة الكائن وتتطلب مرجعًا إلى الكائن، عادةً self.
  • طرق الفئة: يتم وضع علامة على هذه الطرق باستخدام الديكور @classmethod وتأخذ مرجعًا إلى الفئة نفسها كمعلمة أولى، تسمى عادةً cls.
  • الأساليب الثابتة: يتم تمييز هذه الأساليب بالزخرفة @staticmethod ولا تتطلب مرجعًا إلى المثيل أو الفئة. وهي تتصرف مثل الوظائف العادية ولكنها تنتمي إلى مساحة اسم الفئة.
# Example of instance, class, and static methods
class MathOperations:
    # Class attribute
    pi = 3.14

    # Instance method
    def square(self, number):
        return number ** 2

    # Class method
    @classmethod
    def circle_area(cls, radius):
        return cls.pi * (radius ** 2)

    # Static method
    @staticmethod
    def add(x, y):
        return x + y

# Using different types of methods
math = MathOperations()
print(math.square(4))             # Output: 16 (Instance method)
print(MathOperations.circle_area(5))  # Output: 78.5 (Class method)
print(MathOperations.add(3, 7))   # Output: 10 (Static method)

الميراث في بايثون

الوراثة هي ميزة أساسية في البرمجة الموجهة للكائنات والتي تسمح للفئة بوراثة الخصائص والطرق من فئة أخرى. الفئة التي ترث تسمى child class، بينما الفئة التي يتم توريثها هي parent class. تعمل الوراثة على تعزيز إمكانية إعادة استخدام الكود وتبسيط بنية الكود.

# Example of inheritance
class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        return f"{self.name} makes a sound"

# Child class inheriting from Animal
class Cat(Animal):
    def speak(self):
        return f"{self.name} says Meow"

# Creating objects of the parent and child classes
animal = Animal("Generic Animal")
cat = Cat("Whiskers")

print(animal.speak())  # Output: Generic Animal makes a sound
print(cat.speak())     # Output: Whiskers says Meow

خاتمة

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