Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

متغيرات الـ Instance مقابل متغيرات الـ Class

جزء من قسم Object Oriented Programming في رحلة Python على Coddy — الدرس 13 من 64.

تعد متغيرات المثيل (Instance variables) فريدة لكل كائن، بينما تشترك جميع كائنات الفئة نفسها في متغيرات الفئة (class variables).

إليك مثال على فئة (class) تحتوي على كلا النوعين من المتغيرات

class Student:
    # متغير الفئة - مشترك بين جميع المثيلات
    school = "Python High School"
    
    def __init__(self, name, grade):
        # متغيرات المثيل - فريدة لكل طالب
        self.name = name
        self.grade = grade

إنشاء كائنات الطلاب:

alice = Student("Alice", "A")
bob = Student("Bob", "B")

الوصول إلى متغيرات المثيل (الفريدة لكل كائن):

print(alice.name)  # أليس
print(bob.name)    # بوب
print(alice.grade) # A
print(bob.grade)   # B

الوصول إلى متغيرات الفئة (المشتركة بين جميع الكائنات):

print(alice.school)     # مدرسة بايثون الثانوية
print(bob.school)       # مدرسة بايثون الثانوية
print(Student.school)   # مدرسة بايثون الثانوية

الآن قم بتغيير متغير الفئة:

Student.school = "Python Academy"

تحقق من كيفية تأثير التغيير على جميع المثيلات:

print(alice.school)   # أكاديمية بايثون
print(bob.school)     # أكاديمية بايثون

المخرجات:

Alice
Bob
A
B
Python High School
Python High School
Python High School
Python Academy
Python Academy

يمكنك أيضاً إنشاء متغيرات النسخة (instance variables) بعد إنشاء الكائن:

alice.age = 16  # هذا ينشئ متغير نسخة
print(alice.age)  # 16
# print(bob.age)  # سيؤدي هذا إلى حدوث خطأ - bob ليس لديه age

الفرق الرئيسي: متغيرات النسخة (التي يتم إنشاؤها باستخدام self.variable_name) فريدة لكل كائن، بينما متغيرات الفئة (المعرفة مباشرة داخل الفئة) تتم مشاركتها بواسطة جميع الكائنات. تغيير متغير الفئة يؤثر على جميع النسخ.

challenge icon

التحدي

سهل

أكمل نظاماً مصرفياً.. ستقوم بتعريف فئة BankAccount في ملف واحد واستخدامها في ملف آخر.

ستعمل مع:

  • bank_account.py: قم بتعريف فئة BankAccount مع السمات والأساليب
  • driver.py: استيراد الفئة، وإنشاء الحسابات، وتوضيح متغيرات الفئة

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

جرّب بنفسك

# TODO: استيراد فئة BankAccount من bank_account.py
from bank_account import BankAccount

# TODO: إنشاء حسابين بهذه التفاصيل الدقيقة:
# - account1: صاحب الحساب "Alice Smith" برصيد 1000 دولار
# - account2: صاحب الحساب "Bob Jones" برصيد 2000 دولار

# TODO: استدعاء display_info() لكلا الحسابين

# TODO: تغيير متغير الفئة interest_rate إلى 0.03 (3%)
# استخدم هذا التنسيق: BankAccount.interest_rate = 0.03

# TODO: طباعة النص "After interest rate change:"

# TODO: استدعاء display_info() لكلا الحسابين مرة أخرى لإظهار أن كليهما لديهما معدل الفائدة الجديد
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Object Oriented Programming