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 في كلا الملفين للحصول على تعليمات خطوة بخطوة. ستوجهك التعليقات خلال إنشاء الفئة بالمتغيرات والأساليب المناسبة، وتوضيح كيفية تأثير متغيرات الفئة على جميع المثيلات.

ورقة مرجعية

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

فئة تحتوي على كلا نوعي المتغيرات:

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)  # Alice
print(bob.name)    # Bob

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

print(alice.school)     # Python High School
print(bob.school)       # Python High School
print(Student.school)   # Python High School

تغيير متغيرات الفئة يؤثر على جميع المثيلات:

Student.school = "Python Academy"
print(alice.school)   # Python Academy
print(bob.school)     # Python Academy

إنشاء متغيرات مثيل بعد إنشاء الكائن:

alice.age = 16  # هذا ينشئ متغير مثيل
print(alice.age)  # 16

جرّب بنفسك

# 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