الأصناف في بايثون

من موسوعة حسوب
مراجعة 15:04، 29 مايو 2018 بواسطة عبد اللطيف ايمش (نقاش | مساهمات) (استبدال النص - 'Python/numeric-operations' ب'Python/numeric_operations')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

تعدّ الأصناف وسيلة لجمع البيانات والعمليات في بوتقة واحدة، ويؤدي إنشاء صنف جديد إلى تكوين نوع جديد من الكائنات، ما يتيح إنشاء نسخ (instances) من ذلك النوع. يمكن أن ترتبط بكلّ صنف مجموعة من الخاصيات (attributes) التي تساعد في متابعة حالة الصنف، إضافة إلى مجموعة من التوابع (methods) التي تساعد في تعديل حالة ذلك الصنف.

لو أجرينا مقارنة بين بايثون ولغات البرمجة الأخرى، سنجد بأنّ بايثون تضيف قدرًا ضئيلًا من الصياغات الجديدة إلى الأصناف؛ إذ تعتمد بايثون الأساليب المتّبعة في لغتي C++‎ و Modula-3.

توفّر الأصناف في بايثون جميع الميزات المعتمدة في البرمجة كائنية التوجه، فيمكن أن يرث الصنف من أصناف أخرى متعددة، ويمكن للصنف المشتق من صنف آخر أن يتجاوز (override) على التوابع الخاصة بالصنف أو الأصناف الأساسية، ويمكن للتابع أن يستدعي التابع الخاص بالصنف الأساسي باستخدام الاسم ذاته.

يمكن للأصناف أن تتضمن عددًا غير محدّدٍ من البيانات، وكما هو الحال في الوحدات (modules) فإنّ الأصناف هي جزء من الطبيعة الديناميكية لبايثون، إذ يمكن إنشاؤها في وقت التشغيل بل ويمكن تعديلها بعد إنشائها أيضًا.

في لغة C++‎ تكون عناصر الصنف عادة (وبضمنها عناصر البيانات) عامّة (public، باستثناء المتغيرات الخاصة Private Variables) وتكون جميع دوالّ الصنف ظاهريةً (virtual).

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

وتشبه بايثون Smalltalk في أنّ الأصناف هي كائنات بحدّ ذاتها وهكذا يمكن تقديم صياغات لاستيراد الأصناف وإعادة تسميتها. 

على العكس من C++‎ و Modula-3، يمكن استخدام أنواع البيانات الداخلية كأصناف أساسية يمكن للمستخدم أن يوسّعها حسب حاجته، كذلك يمكن إعادة تعريف معظم العوامل الداخلية -كما هو الحال في C++‎- التي تمتلك صيغة خاصة (مثل العوامل الحسابية) في نسخ الأصناف.

انظر أيضًا

مصادر

  • صفحة Classes في توثيق بايثون الرسمي.