نتائج البحث

اذهب إلى التنقل اذهب إلى البحث

class في JavaScript

التصريح عن الصنف (class declaration) يؤدي إلى إنشاء صنف جديد له اسمٌ معيّن يستخدم الوراثة عبر سلسلة prototype. يمكنك أيضًا تعريف الأصناف عبر تعابير تعريف الأصناف (class expression)، لكن التصريح عن الصنف بهذه الطريقة يختلف عن استخدام تعابير تعريف الأصناف في أنَّه لا يسمح بإعادة التصريح عن الصنف مرةً أخرى، وسيرمي (throw) خطأً إن حاولنا ذلك. البنية العامة class name [extends] { // محتويات الصنف } الوصف كما في تعابير تعريف الأصناف، ستُنفَّذ التعابر البرمجية الموجودة ضمن الصنف في نمط ...

الصنف Class في روبي

تُعدُّ الأصناف كائناتٍ من الدرجة الأولى (first-class objects) في روبي، وتعدُّ جميعها نُسخٌ من الصنف Class. عادةً، يمكن عادةً إنشاء صنف جديد بالشكل التالي: class Name # تكتب هنا الشيفرة التي تعرف سلوك الصنف end عندما يُنشَأ صنف جديد، يهيَّأ كائن من النوع Class ويسند إلى ثابت عام (global constant، هو Name في المثال السابق). عند استدعاء Name.new لإنشاء كائن جديد، يُنفَّذ التابع new الخاص بالصنف Class بشكل افتراضي. يمكن إثبات ذلك من خلال إعادة تعريف التابع new: class Class alias old_new ...

الأصناف الخاملة (Lazy Classes)

توصيف المشكلة وجود بعض الأصناف (classes) قليلة الاستخدام ولا أهمية لها في البرنامج، ويجدر التخلُّص منها إذ إنّ فهم وصيانة الأصناف يكلِّفان الوقت والجهد. أسبابها يكون تصميم الصنف بدايةً لأداء مهامٍ (functionality) معيّنة، ولكنّه قد يصبح صغيرًا لا أهميّة له من بعد الكثير من عمليات إعادة التصميم (refactoring). قد تُخصَّص بعض الأصناف لدعم التطوير المستقبلي للبرنامج (كالتخطيط المُسبق لميّزاتٍ ستُضاف لاحقًا)، وتصبح تلك الأصناف خاملةً عندما لا يحدث أيُّ تطويرٍ فيما بعد. وما الحل؟ تضمين الأصناف (inline classes) للعناصر (components) ...

أصناف البيانات (Data Classes)

توصيف المشكلة وجود العديد من أصناف البيانات في الشيفرة، والتي تُستخدَم لتخزين البيانات التي تحتاج إليها الأصناف الأخرى، إذ تحتوي على حقولٍ للبيانات (fields) وتوابع للوصول إليها (accessors) أي توابعَ للحصول على بيانات الحقول (getter) وأخرى لتعديلها (setter)، ولا تقوم هذه الأصناف بأيّ مهمّة أخرى ولا تستطيع كذلك تنفيذ العمليات (operations) على بياناتها بمفردها. أسبابها من الطبيعي أن يحتوي الصنف -بادئ الأمر- على القليل من الحقول العامّة (public fields) وبعض التوابع للوصول إليها (accessors) ولكن إن استمرَّ الصنف كذلك فلن ...

دمج الصنف (Inline Class)

المشكلة وجود صنفٍ (class) لا يقوم بأيّ مهمّة فعليّة ولا يُخطَّط لإضافة مهامٍ إليه لاحقًا. الحل نقل كافّة الميّزات (features) من هذا الصنف إلى صنفٍ آخر. مثال قبل إعادة التصميم يحتوي الصنف Person على حقلٍ واحدٍ باسم name وتابعٍٍ للحصول على رقم الهاتف getTelephoneNumber ولاشيء آخر، أمّا الصنف TelephoneNumber فهو يحتوي على حقلين باسم officeAreaCode و officeNumber بالإضافة إلى التابع السابق getTelephoneNumber، كما هو موضَّحٌ في مخطط الأصناف الآتي: الصنف Person يحتوي على حقلٍ واحدٍ باسم name وتابعٍٍ للحصول على ...

استخراج الصنف (Extract Class)

المشكلة وجود صنفٍ (class) واحدٍ يقوم بمهامٍ عديدةٍ يمكن توزيعها على صنفين. الحل إنشاء صنفٍ جديدٍ ونقل بعض الحقول (fields) والتوابع (methods) إليه، والتي تتعلَّق بالمهام الوظيفيّة (functionality) لهذا الصنف الجديد. مثال قبل إعادة التصميم يحتوي الصنف Person على عددٍ من الحقول كاسم الشخص (name) ورمز منطقة المكتب (officeAreaCode) ورقمه (officeNumber)، وتابعًا للحصول على هذا الرقم باسم getTelephoneNumber، كما في مخطط الأصناف الآتي: الصنف Person يحتوي على عددٍ من الحقول كاسم الشخص (name) ورمز منطقة المكتب (officeAreaCode) ورقمه (officeNumber)، وتابعًا ...

CSS/Topics/Pseudo Classes

الصنف التمثيل ‎:active العناصر (مثل الأزرار) التي جرى تفعيلها من المستخدم. وعند استخدام الفأرة سيبدأ «تفعيل» العنصر عندما يضغط المستخدم على الزر الرئيسي لها وينتهي عند إفلات الضغط على ذاك الزر. ‎:checked أزرار انتقاء (radio button) أو صناديق تأشير (checkbox) أو خيارات <option> في عنصر<select> تم تحديدها أو انتقاؤها. يمكن أن يُفعِّل المستخدم هذه الحالة بتفعيل أو انتقاء العنصر. ‎:default أي عنصر مُختار افتراضيًا بين مجموعة من العناصر المتعلقة به؛ ويمكن استخدام هذا الصنف الزائف على أيّة أزرار عادية <button> أو أزرار انتقاء (radio button) ...

الأصناف الواسعة (Large Classes)

توصيف المشكلة احتواء الصنف (class) العديدَ من الحقول (fields) والتوابع (methods) وشيفرةً بأسطرَ كثيرةٍ. أسبابها تبدأ الأصناف صغيرةً ليزداد حجمها مع استمرار تطوُّر البرنامج (كما الحال بالتوابع الطويلة) لأنَّ المبرمج يرى أنَّ إضافة ميِّزاتٍ (features) جديدةٍ في صنفٍ موجودٍ مسبقًا أكثر سهولةً من إنشاء أصنافٍ جديدةٍ مخصَّصةٍ لها. وما الحل؟ الحل بسيطٌ جدًا؛ وهو تقسيم الصنف، وذلك بإحدى الوسائل الآتية: إنشاء صنفٍ جديدٍ (Extract Class) إن كان من الممكن فصلُ بعض مهامّ الصنف الحاليّ ونقلها للصنف الجديد. إنشاء صنفٍ فرعيٍّ ...

محدد الأصناف ‎"‎.class"‎‎ في jQuery

محدد الأصناف الوصف يُستخدَم مُحدِّد الأصناف في تحديد كافّة العناصر التي تمتلك الصّنف المُعطَى. ‎jQuery( ".class" )‎ أضيفت في الإصدار: 1.0. class الصّنف المطلوب البحث عنه. يُمكِن للعنصر أن يمتلك عدّة أصناف، يجب أن يتطابق واحد منها فقط مع هذه القيمة. تستخدم jQuery لأجل مُحدِّدات الأصناف الدالة ‎getElementsByClassName()‎ الأصليّة في JavaScript إن كان المتصفّح يدعمها. أمثلة إيجاد العنصر الذي يمتلك الصّنف myClass: <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>class مثال عن المحدد</title> <style> div, span { ...

التابع new في الصنف Class في روبي

يستدعي التابع new التابعَ allocate لإنشاء كائن جديد من الصنف class، ثم يستدعي التابع initialize مع ذلك الكائن المنشأ ويُمرِّر إليه وسائط محددة. هذا هو التابع الذي يُستدعى كلما أريد إنشاء كائن باستخدام التابع ‎.new. البنية العامة new(args, ...) → obj المعاملات args الوسيط المراد تمريره إلى التابع initialize عند استدعائه. ... الوسائط الأخرى المراد تمريرها إلى التابع initialize عند استدعائه. القيم المعادة يعاد الكائن الذي أنشئ. انظر أيضًا التابع allocate: يحجز مساحةً من الذاكرة لكائن جديد من الصنف class ...

التابع superclass في الصنف Class في روبي

يعيد التابع superclass الصنف الأب (superclass) للصنف المستدعى معه. البنية العامة superclass → a_super_class or nil القيمة المعادة يعاد الصنف الأب للصنف المعطى أو القيمة nil إن لم يكن للصنف المعطى صنف أب. أمثلة مثال على استخدام التابع superclass: File.superclass #=> IO IO.superclass #=> Object Object.superclass #=> BasicObject class Foo; end class Bar < Foo; end Bar.superclass ...

التابع allocate في الصنف Class في روبي

يحجز التابع allocate مساحةً من الذاكرة لكائن جديد من الصنف class دون استدعاء التابع initialize مع النسخة (instance) الجديدة. يجب أن يكون الكائن المُعاد نسخةً من الصنف class. البنية العامة allocate() → obj القيم المعادة يعاد كائن من الصنف class. أمثلة مثال على استخدام التابع allocate: klass = Class.new do def initialize(*args) @initialized = true end def initialized? @initialized || false end end klass.allocate.initialized? #=> false انظر أيضًا التابع new: يُنشئ صنفًا جديدًا مجهولًا غير مسمى (unnamed) من ...

التابع inherited في الصنف Class في روبي

يُستدعَى التابع inherited كرد نداء في كل مرة يُنشأ فيها صنف فرعي (subclass) من الصنف الحالي. البنية العامة inherited(subclass) أمثلة مثال على استخدام التابع inherited: class Foo def self.inherited(subclass) puts "New subclass: #{subclass}" end end class Bar < Foo end class Baz < Bar end انظر أيضًا التابع new: يُنشئ صنفًا جديدًا مجهولًا غير مسمى (unnamed) من الصنف الأب (superclass) الممرر إليه (أو من الصنف Object إن لم يمرر إليه أي شيء). التابع allocate: يحجز مساحةً من الذاكرة لكائن جديد من الصنف class ...

التابع new في الصنف Class في روبي

يُنشئ التابع new صنفًا جديدًا مجهولًا غير مسمى (unnamed) من الصنف الأب ( superclass) المُمرَّر إليه (أو من الصنف Object إن لم يمرر إليه أي شيء). يمكن إعطاء صنف ما اسمًا عن طريق تعيين كائن الصنف (class object) وإعطائه قيمة ثابتة. إن أعطيت كتلة برمجية، فسيُمرَّر إليها كائن الصنف (class object)، وستقدَّر الكتلة في سياق ذلك الصنف كما هو الحال مع class_eval. عيِّن الصنف وأعطه قيمة ثابتة (يبدأ الاسم بأحرف كبيرة) إذا كنت تريد معاملته كصنف اعتيادي. البنية العامة new(super_class=Object) ...

الأصناف المُغلَقة (Sealed Classes) في لغة Kotlin

تُستخدَم الأصناف المُغلَقة لتمثيل الهرميّة (hierarchy) المحدودة للأصناف؛ وذلك عندما يكون نوع القيمة هو أحد الأنواع الموجودة في مجموعةٍ مُحدَّدةٍ (limited set) وليس أيّ نوع آخر، وبالتالي تُعدُّ هذه الأصناف إضافةً (extension) لأصناف الثوابت المُتعدَّدة (enum classes)، إذ إنّ مجموعة القيم لنوع enum محدودة أيضًا ولكل ثابت فيها نسخةٌ (instance) واحدةٌ فقط، بينما يمكن أن يكون للصنف الفرعيّ (subclass) من الصنف المغلق أكثر من نسخةٍ تحتوي على الحالة (case). ويُستخدَم المُحدِّد (modifier)‏ sealed قبل اسم الصنف للتصريح عن أنّه من ...

الأصناف (Classes) والوراثة (Inheritance) في لغة Kotlin

تُستخدم الكلمة المفتاحيّة class للتصريح (declaration) عن الصنف بالصيغة الآتية (اسم الصنف Invoice): class Invoice { } ويحتوي التصريح على اسم الصنف (class name) وترويسة الصنف (class header) (والتي تُحدِّد معاملات النوع والباني الأساسيّ ...إلخ.) وبُنية الصنف (class body) محاطةً بالقوسين {}، وإن كلًا من ترويسة الصنف وبُنيته اختياريتان؛ فإذا كان الصنف خاليًا لا حاجة للأقواس، مثل: class Empty الباني (Constructor) يوجد لكلّ صنف في لغة Kotlin بانٍ رئيسيّ (primary) واحدٌ وبانٍ -أو أكثر- ثانويّ (secondary)، إذ يُعدُّ الباني الرئيسيّ جزءًا من ...

أصناف البيانات (Data Classes) في لغة Kotlin

تُنشَأ بعض الأصناف بهدف تخزين البيانات فيها بشكلٍ أساسيّ، وبالتالي فإنّ كلّ ما تقوم به هذه الأصناف من وظائف يرتبط بالبيانات، وهذا ما يُسمى بأصناف البيانات في لغة Kotlin وتُعرَّف بالمُحدِّد data كما يلي: data class User(val name: String, val age: Int) قواعد عامّة يقوم المُترجِم في الأصناف من هذه النوع باشتقاق العناصر (deriving members) الآتية من كلِّ الخاصّيّات المُعرَّفة في الباني الأساسيّ (primary constructor): كلًا من equals()‎ و hashCode()‎ الدالة toString()‎ بشكلها ‎"User(name=John, age=42‎)‎"‎ الدوال بالصيغة componentN() functions بما ...

أصناف المكتبة غير الكافية (Incomplete Library Classes)

توصيف المشكلة لا تلبِّي أصناف المكتبة (library classes) كافّة احتياجات البرنامج مع استمرار تطوُّره، ولا يمكن تعديلها لأنّها مُخصَّصةٌ للقراءة فقط (read-only). أسبابها عدم تزويد مُطوِّر المكتبة كافَّةَ الميّزات (features) التي تحتاجها في البرنامج أو امتناعه عن تعريفَ استخدامها (implement). وما الحل؟ لتعريف بعض التوابع (methods) في المكتبة عليك بتعريف التوابع الدخيلة (introduce foreign methods). أمّا لإجراء تغييراتٍ واسعةٍ في صنف المكتبة فعليك بتعريف الإضافات المحليّة (introduce local extensions). إليك المزيد سيكون حلُّ المشكلة كفيلًا بالتقليل من تكرار الشيفرات (duplications)، ...

الدالة issubclass()‎ في بايثون

تعيد الدّالة issubclass()‎ قيمة منطقيّةً تُشير إلى ما إذا كان الصّنف المُعطى صنفًا فرعيًّا لصنف آخر أم لا. البنية العامة issubclass(class, classinfo) المعاملات class الصّنف المرغوب التّحقّق من كونه فرعًا من الصّنف classinfo . classinfo الصّنف أو النّوع المرغوب التّحقق من أنّ الصّنف class فرعٌ منه. يُمكن كذلك أن يكون صفًّا من الأصناف أو الأنواع للتحقّق من أنّ الكائن فرعٌ من أحدها. القيمة المعادة القيمة True إن كان الصّنفُ class صنفًا فرعيًّا من الصّنف classinfo (سواء كان مُباشرًا، غير مباشر، ...

أصناف الثوابت المُتعدِّدة (Enum Classes) في لغة Kotlin

يتلخَّصُ الاستخدام الرئيسيّ لأصناف الثوابت المتعدَّدة في قدرتها على تعريف الاستخدام (implementing) للثوابت المتعدًّدة الحافظة للنوع (type-safe)، ويُصرَّح عنها بالشكل: enum class Direction { NORTH, SOUTH, WEST, EAST } إذ يُعدُّ كلُّ ثابتٍ فيها كائنًا (object)، ويُفصل فيما بينها بالفاصلة , . التهيئة (Initialization) لمّا كان كلّ ثابتٍ في صنف الثوابت المتعدِّدة (enum) يُعدُّ كائنًا فيمكن إجراء التهيئة كما يلي: enum class Color(val rgb: Int) { RED(0xFF0000), ...

الدالة classmethod()‎ في بايثون

الدّالة classmethod()‎ مُزخرفٌ يُحوّل تابعًا عاديًّا في صنف ما إلى تابع صنف (class method) ليُمكن الوصول إلى الصّنف الذي عُرّف فيه التّابع. يستقبل تابع الصّنفِ الصّنفَ كمُعاملٍ أول، تمامًا كما يستقبل التّابع العاديّ النّسخة (instance) كمُعامل أولٍ (أي الكائن الذي نُشير إليه عادةً بالاسم self). البنية العامة class C: @classmethod def f(cls, arg1, arg2, ...): ... المعاملات لا توجد مُعاملات. لكنّ الدّالة المُزخرَفَة f تستقبل المُعامل cls الذي يُشير إلى الصّنف الذي عُرّف عليه ...

الدالة ascii()‎ في بايثون

تعيد الدّالة ascii()‎ تمثيلًا (representation) نصيًّا لكائن مُعيّنٍ يُمكن طباعته كما الحال مع الدّالة repr()‎، لكن مع تهريب (escape) المحارف التي لا تُعدّ محارفَ ASCII في السلسلة النّصيّة المعادة باستعمال التّهريبات ‎\‎U‎ أو ‎\‎u‎‎ أو ‎\‎x. وتُعيد هذه الدّالة سلسلةً نصيّةً مُشابهةً لتلك التي كانت تُعيدها الدّالة repr()‎ في بايثون 2. البنية العامة ascii(object) المعاملات object الكائن المُراد الحصول على تمثيلٍ نصيّ له. القيمة المعادة سلسلة نصيّة تمثّل الكائن. انظر المثال H]khi. أمثلة يوضّح المثال التّالي الفرق بين كلّ من ...

الوحدة enum في بايثون

enumeration هو مجموعة من الأسماء الرمزية (العناصر) المرتبطة بقيم ثابتة وفريدة. يمكن مقارنة عناصر enumeration عن طريق هويتها، ويمكن المرور على عناصر enumeration بواسطة حلقة تكرارية. وحدة enum تقدّم وحدة enum أربعة أصناف enumeration يمكن استخدامها لتعريف مجموعة فريدة من الأسماء والقيم، وهذه الأصناف هي: Enum و IntEnum و Flag و IntFlag. وإلى جانب ما سبق تقدّم الوحدة مزخرفًا واحدًا هو unique()‎، وصنفًا مساعدًا واحدًا هو auto. الصنف enum.Enum هو الصنف الأساسي والذي يستخدم لإنشاء ثوابت معدّدة enumerated constants. راجع ...

الأعداد الكسرية في بايثون

تتيح وحدة fractions التعامل مع الأعداد الكسرية وإجراء العمليات الحسابية المختلفة عليها. يمكن إنشاء نسخة من الكائن Fraction باستخدام زوج من الأعداد الصحيحة أو من عدد كسري آخر أو من سلسلة نصية. class fractions.Fraction(numerator=0, denominator=1) class fractions.Fraction(other_fraction) class fractions.Fraction(float) class fractions.Fraction(decimal) class fractions.Fraction(string) في السطر الأول من المثال السابق جرى استخدام زوج من الأعداد الصحيحة لإنشاء نسخة جديدة من الصنف Fraction. يجب أن يكون كلّ من البسط numerator والمقام denominator نسخًا من الصنف numbers.Rational ونحصل بذلك على نسخة جديدة من الصنف Fraction تحمل القيمة (البسط/المقام). ...

الأعداد الكسرية في بايثون

تتيح وحدة fractions التعامل مع الأعداد الكسرية وإجراء العمليات الحسابية المختلفة عليها. يمكن إنشاء نسخة من الكائن Fraction باستخدام زوج من الأعداد الصحيحة أو من عدد كسري آخر أو من سلسلة نصية. class fractions.Fraction(numerator=0, denominator=1) class fractions.Fraction(other_fraction) class fractions.Fraction(float) class fractions.Fraction(decimal) class fractions.Fraction(string) في السطر الأول من المثال السابق جرى استخدام زوج من الأعداد الصحيحة لإنشاء نسخة جديدة من الصنف Fraction. يجب أن يكون كلّ من البسط numerator والمقام denominator نسخًا من الصنف numbers.Rational ونحصل بذلك على نسخة جديدة من الصنف Fraction تحمل القيمة (البسط/المقام). ...

الدالة staticmethod()‎ في بايثون

تُحوّل الدّالة staticmethod()‎ تابعًا إلى تابعٍ ساكن (static method). البنية العامة staticmethod(fun) @staticmethod المعاملات fun الدّالة أو التّابع المُراد تحويله إلى تابعٍ ساكن. القيمة المعادة يُحوّل التّابع المُزخرَف إلى تابعٍ ساكن لا يستقبل مُعاملًا أولًا صريحًا (المُعامل المعروف بالاسم self في التّوابع). أمثلة المثال التّالي يوضّح كيفيّة إنشاء تابع ساكن باستعمال الدّالة staticmethod كمُزخرِف: >>> class A: ... @staticmethod ... def hello(): # لاحظ أنّ التّابع السّاكن لا يستقبل أيّ مُعامل تلقائيّ كما في التّوابع ...

تعريف الأصناف في بايثون

أبسط صيغة لتعريف الأصناف في بايثون هي: class ClassName:     <statement-1>     .     .     .     <statement-N> تعريف الأصناف كما هو الحال مع عبارات تعريف الدوال (عبارات def) يجب تنفيذ عبارات تعريف الأصناف حتى يكون لها الأثر المطلوب. يمكن تعريف الأصناف في بايثون ضمن عبارات if أو حتى داخل الدوال. عادة ما تستخدم الدوال داخل تعريف الصنف، ولكن من الممكن استخدام أنواع أخرى من العبارات، وتمتلك الدوال داخل الأصناف مجموعة من الوسائط الخاصّة بعملية استدعاء التوابع في بايثون. ...

تعريف الأصناف في بايثون

أبسط صيغة لتعريف الأصناف في بايثون هي: class ClassName:     <statement-1>     .     .     .     <statement-N> تعريف الأصناف كما هو الحال مع عبارات تعريف الدوال (عبارات def) يجب تنفيذ عبارات تعريف الأصناف حتى يكون لها الأثر المطلوب. يمكن تعريف الأصناف في بايثون ضمن عبارات if أو حتى داخل الدوال. عادة ما تستخدم الدوال داخل تعريف الصنف، ولكن من الممكن استخدام أنواع أخرى من العبارات، وتمتلك الدوال داخل الأصناف مجموعة من الوسائط الخاصّة بعملية استدعاء التوابع في بايثون. ...

المتغيرات الخاصة في بايثون

لا تدعم بايثون متغيرات الأصناف الخاصة (Private) والتي لا يمكن الوصول إليها من خارج الكائن، ولكن يتفق معظم المبرمجين على أنّ الاسم المسبوق بشرطة سفلية (مثل: ‎_spam) يجب أن يُعامل كجزء غير عام من الواجهة البرمجية (سواء كان ذلك الجزء دالة أم تابعًا أم خاصية).  هناك حالة واحدة تستدعي استخدام عناصر الأصناف الخاصة وهي تجنب حدوث تضارب بين الأسماء الموجودة في الصنف والأسماء المعرّفة في الأصناف الفرعية، ونظرًا لذلك تقدم اللغة دعمًا محدودًا لمثل هذه الحالة، وتدعى بتشويه الأسماء name ...

المتغيرات الخاصة في بايثون

لا تدعم بايثون متغيرات الأصناف الخاصة (Private) والتي لا يمكن الوصول إليها من خارج الكائن، ولكن يتفق معظم المبرمجين على أنّ الاسم المسبوق بشرطة سفلية (مثل: ‎_spam) يجب أن يُعامل كجزء غير عام من الواجهة البرمجية (سواء كان ذلك الجزء دالة أم تابعًا أم خاصية).  هناك حالة واحدة تستدعي استخدام عناصر الأصناف الخاصة وهي تجنب حدوث تضارب بين الأسماء الموجودة في الصنف والأسماء المعرّفة في الأصناف الفرعية، ونظرًا لذلك تقدم اللغة دعمًا محدودًا لمثل هذه الحالة، وتدعى بتشويه الأسماء name ...

الدالة weakref.WeakMethod()‎ في بايثون

صنف فرعي خاصّ من الصنف ref يحاكي إشارة ضعيفة إلى تابع مرتبط bound method (أي تابع معرف في صنف وجرى البحث عنه في نسخة من ذلك الصنف). ملاحظة: هذا الصنف جديد في الإصدار 3.4. البنية العامة class weakref.WeakMethod(method) المعاملات dict التابع المراد إنشاء محاكاة لإشارة ضعيفة إليه. التوابع المرتبطة سريعة الزوال ما يمنع من تمسّك الإشارات الضعيفة العادية بها. يمتلك الصنف WeakMethod طريقة خاصة لإعادة إنشاء التابع المرتبط والإبقاء عليه إلى أن يموت الكائن أو الدالة الأصلية: >>> class C: ... ...

الاستثناءات في بايثون

قد تكون التعابير البرمجية في الشيفرة صحيحة من ناحية الصيغة، لكن قد يؤدي تنفيذ تلك الشيفرة إلى التسبب في حدوث الأخطاء. تسمّى الأخطاء المُكتشفة أثناء تنفيذ الشيفرة بالاستثناءات (exceptions) وقد تتسبب في إيقاف عمل البرنامج (fatal) في بعض الأحيان. صيغة الاستثناءات تُنشئ الاستثناءات رسائل خطإٍ مماثلة لما يلي: >>> 10 * (1/0) Traceback (most recent call last):   File "<stdin>", line 1, in <module> ZeroDivisionError: division by zero >>> 4 + spam*3 Traceback (most recent call last):   File "<stdin>", line 1, in <module> NameError: name 'spam' ...

الدالة slice()‎ في بايثون

تعيد الدّالة slice()‎ كائن slice يُمثّل مجموعة فهارس (indices) تُحدّد من طرف الاستدعاء ‎range‎(‎start‎,‎ stop‎, ‎step‎)‎‎. البنية العامة class slice(stop) class slice(start, stop[, step]) المعاملات start مُعامل اختياريّ قيمته الافتراضيّة هي None، يُمثّل بداية الفهارس. stop المُعامل المطلوب الوحيد، والذي يُمثّل نقطة توقّف الفهارس. step مُعامل اختياريّ قيمته الافتراضيّة هي None، يُمثّل الخطوة التي بين كل فهرس وآخر. القيمة المعادة كائن slice‎ يحتوي على خصائص start، وstop، وstep قابلة للقراءة فقط، والتي تُعيد قيمة المُعامل المُرتبط بها. الكائن المُعاد لا يمتلك ...

الدالة isinstance()‎ في بايثون

تعيد الدّالة isinstance()‎ قيمة منطقيّةً تُشير إلى ما إذا كان الكائن المُعطى نسخة (instance) من الصّنف المُعطى أم لا. البنية العامة isinstance(object, classinfo) المعاملات object الكائن المرغوب التّحقّق من كونه نسخةً من الصّنف (أو النّوع) المُعطى. classinfo الصّنف أو النّوع المرغوب التّحقق من أنّ الكائن نسخة منه. يُمكن كذلك أن يقبل صفًّا (أو عدّة صفوف) من الأصناف أو الأنواع للتحقّق من أنّ الكائن نُسخة من أحدها. القيمة المعادة القيمة True إن كان الكائن نُسخة من الصّنف أو نسخة من أحد ...

عمليات المقارنة في بايثون

تقدّم بايثون ثمان عمليات للمقارنة، وتمتلك جميعها نفس الأولوية (وهي أعلى من العمليات المنطقية). يلخّص الجدول التالي عمليات المقارنة المتوفّرة في بايثون: العملية الوظيفة ‎<‎‎ أقل من ‎<=‎ أقل من أو يساوي ‎>‎ أكبر من ‎>=‎ أكبر من أو يساوي == المساواة ‎!=‎ عدم المساواة is هوية الكائن is not نفي هوية الكائن ملاحظات يمكن ربط عمليات المقارنة بعضها ببعض حسب الحاجة، فعلى سبيل المثال العبارة x < y <= z مكافئة للعبارة x < y and y <= z، ...

الدالة functools.total_ordering()‎ في بايثون

يقوم مُزخرف الأصناف functools.total_ordering()‎ بزخرفة صنف يُعرّف تابعًا أو عدّة توابع ترتيب مُقارنة غنيّة (rich comparison ordering methods)، ويقوم بإضافة بقيّة توابع المُقارنة. يُبسّط هذا الجهد المبذول في تحديد جميع عمليّات المُقارنة الغنيّة المُمكنة. يجب على الصّنف أن يُعرّف التّابع الخاصّ ‎__lt__()‎، أو ‎__le__()‎، أو ‎__gt__()‎، أو ‎__ge__()‎. إضافة إلى التّابع الخاصّ ‎__eq__()‎. البنية العامة @functools.total_ordering المعاملات لا توجد مُعاملات. أمثلة المثال التّالي يوضّح كيفيّة استعمال المُزخرف للمُقارنة بين سياراتٍ حسب سُرعتها، تابع حالة التّساوي يُشير إلى أنّ نُسخةً من ...

الدالة property()‎ في بايثون

تعيد الدّالة property()‎ خاصيّةً يُمكن التّحكم في تابع الحصول على قيمتها، وتابع تعيين قيمة لها، وتابع حذف قيمتها، وسلسلة التّوثيق (docstring) الخاصّة بها. ويُمكن كذلك استخدامها كمُزخرف لتحويل تابع إلى خاصيّة. البنية العامة property(fget=None, fset=None, fdel=None, doc=None) المعاملات fget الدالّة التّي ستُستخدم للحصول على قيمة الخاصيّة. fset الدالّة التّي ستُستخدم لتعيين قيمة للخاصيّة. fdel الدالّة التّي ستُستخدم لحذف قيمة الخاصيّة. doc سلسلة توثيق الخاصيّة. القيمة المعادة كائن خاصيّة (property object). الكائن المُعاد يحتوي على الخاصيّات fget، وfset، وfdel التي تُمثّل ...

الدالة type()‎ في بايثون

تعيد الدّالة type()‎ نوع الكائن المُعطى إن مُرّر مُعامل واحد لها. وتعيد كائن نوعٍ (type object) جديد إن مُرّرت لها ثلاثة مُعاملات. البنية العامة type(object) type(name, bases, dict) المعاملات تقبل الدّالة type()‎ إمّا مُعاملًا واحدًا فقط، أو ثلاثة مُعاملات كما هو واضح في البنية العامّة أعلاه. عند استدعائها بمُعامل واحد فقط، ستُعيد الدّالة نوع الكائن المُمرّر. أمّا عند الاستدعاء بثلاثة مُعاملات، فسيُعاد كائن نوعٍ جديد. وهو طريقة ديناميكيّة لإنشاء الأصناف كبديل للجملة class. object عند استدعائها بمُعامل واحد فقط، يُمثّل هذا ...

المكرِّرات Iterators في بايثون

لعلّك لاحظت أن بالإمكان المرور على عناصر معظم الكائنات الحاوية (container objects) (مثل القوائم والقواميس والسلاسل النصية وغيرها...) باستخدام عبارة for: for element in [1, 2, 3]:     print(element) for element in (1, 2, 3):     print(element) for key in {'one':1, 'two':2}:     print(key) for char in "123":     print(char) for line in open("myfile.txt"):     print(line, end='') تستدعي عبارة for خلف الكواليس الدالة iter()‎ على الكائن الحاوي، فتعيد الدالة كائن تكرار (iterator object) يعرّف التابع ‎__next__‎()‎ الذي يستطيع الوصول إلى عنصر واحد في الكائن الحاوي ...

الدالة weakref.WeakKeyDictionary()‎ في بايثون

صنف مجموعة Set class يحتفظ بالإشارات الضعيفة لعناصر المجموعة. سيجري تجاهل العنصر عند عدم وجود أي إشارة قوية إليه. البنية العامة weakref.WeakSet([elements]) المعاملات عناصر المجموعة المراد إنشاء إشارات ضعيفها إليها. مصادر صفحة Weak references في توثيق بايثون الرسمي.

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

تدعم بايثون شأنها في ذلك شأن أي لغة برمجية كائنية التوجه مفهوم الوراثة، وأبسط صيغة لتعريف صنف مشتق أو موروث من صنف آخر هي: class DerivedClassName(BaseClassName):     <statement-1>     .     .     .     <statement-N> يجب أن يكون الاسم BaseClassName معرّفًا في النطاق الذي يحتوي تعريف الصنف المشتق. ويمكن استخدام أي تعبير محلّ اسم الصنف الأساسي، ويمكن لهذا أن يكون مفيدًا عندما يكون الصنف الأساسي معرّفًا في وحدة أخرى على سبيل المثال: class DerivedClassName(modname.BaseClassName): يجري تنفيذ تعريف الصنف المشتق بنفس الطريقة ...

الدالة super()‎ في بايثون

تعيد الدّالة super()‎ كائنًا وسيطًا يُفوّض استدعاءات التّوابع إلى صنف أبٍ أو صنف شقيق للصّنف الذي استُدعيَت منه الدّالة. هذا مُفيد للوصول إلى التّوابع الموروثة التي أعيدت كتابتها في صنف مُعيّن. ترتيب البحث يكون هو نفسه التّرتيب المُستخدم من طرف الدّالة getattr()‎ لكنّ النّوع type‎ المُعطى يُتجاهَل. البنية العامة super([type[, object-or-type]]) المعاملات type النّوع الذي ستقوم الدّالة super()‎ بتفويض استدعاءات التّوابع إلى صنف أبٍ أو صنف شقيق له. تعرض الخاصيّة __mro__ الخاصّة بالصّنف type ترتيب البحث عن التوابع (method resolution ...

الصنف urllib.request.AbstractDigestAuthHandler في بايثون

صنف مخلوط mixin class يساعد في عمليات استيثاق HTTP لكلٍّ من المضيف البعيد remote host والوسيط proxy. البنية العامة urllib.request.AbstractDigestAuthHandler(password_mgr=None) المعاملات password_mgr معامل اختياري، ويجب أن تكون قيمته متوافقة مع الصنف HTTPPasswordMgr. راجع قسم كائنات HTTPPasswordMgr للاطلاع على معلومات مفصّلة حول الواجهة التي يجب أن تكون مدعومة. مصادر صفحة Extensible library for opening URLs في توثيق بايثون الرسمي.

الوحدة urllib.parse‎‎ في بايثون

تعرّف هذه الوحدة واجهة معيارية لتقسيم سلاسل محدّد موقع الموارد المحدّد Uniform Resource Locator (‏URL اختصارًا) إلى مكوّنات (نظام العنونة addressing scheme، موقع الشبكة network location، المسار path ... الخ)، ولدمج هذه المكونات مرّة أخرى في سلسلة URL، ولتحويل "URL نسبي" إلى URL مطلق بالاعتماد على "URL أساسي". صمّمت هذه الوحدة لتطابق معايير RFC للإنترنت الخاصّة بالمحدّدات النسبية لمواقع الموارد المحدّدة Relative Uniform Resource Locators. وتدعم الوحدة الأنواع التالية من مخطّطات URL: file, ftp, gopher, hdl, http, https, imap, mailto, ...

الوحدة urllib.parse‎‎ في بايثون

تعرّف هذه الوحدة واجهة معيارية لتقسيم سلاسل محدّد موقع الموارد المحدّد Uniform Resource Locator (‏URL اختصارًا) إلى مكوّنات (نظام العنونة addressing scheme، موقع الشبكة network location، المسار path ... الخ)، ولدمج هذه المكونات مرّة أخرى في سلسلة URL، ولتحويل "URL نسبي" إلى URL مطلق بالاعتماد على "URL أساسي". صمّمت هذه الوحدة لتطابق معايير RFC للإنترنت الخاصّة بالمحدّدات النسبية لمواقع الموارد المحدّدة Relative Uniform Resource Locators. وتدعم الوحدة الأنواع التالية من مخطّطات URL: file, ftp, gopher, hdl, http, https, imap, mailto, ...

تبديل رموز الأنواع بالأصناف (Replace Type Code with Class)

ما هو رمز النوع (type code)؟ يحدث رمز النوع عندما يوجد مجموعة من الأرقام أو السلاسل النصية التي تشكل قائمة بالقيم المسموح بها لبعض العناصر بدلًا من استخدام نوع بيانات منفصل. غالبا ما تُعطى هذه الأرقام والسلاسل المحددة أسماءً مفهومة عن طريق الثوابت، وهو السبب في استخدام هذه الرموز بشكل كبير. المشكلة يحتوي الصنف على حقل يحتوي على رموز الأنواع. ولا تُستخدم قيم هذا النوع في شروط المُشغِّل ولا تؤثر على سلوك البرنامج. الحل إنشاء صنف جديد واستخدام كائناته بدلًا ...

الوحدة urllib.response‎‎ في بايثون

تعرّف وحدة urllib.response دوالَّ وأصنافًا تقدّم واجهة مصغّرة شبيهة بواجهة التعامل مع الملفات، وتتضمّن الدالتين read()‎ و readline()‎. كائن الاستجابة الاعتيادي هو نسخة من addinfourl والتي تعرف التابع info()‎ الذي يعيد الترويسات وتابع geturl()‎ الذي يعيد عنوان URL. تستخدم الدوال المعرّفة في هذه الوحدة بواسطة الوحدة urllib.request. انظر أيضًا الوحدة urllib.request: تقدّم الوحدة عددًا من الدوال والأصناف التي تساعد في فتح عناوين URL‏ (HTTP في الغالب) لاستخدامها في عمليات مختلفة مثل الاستيثاق البسيط وإعادة التوجيه والتعامل مع الكعكات cookies وغيرها. مصادر ...

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

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

المولدات Generators في بايثون

المولّدات هي أداة بسيطة وقوية لإنشاء المكرِّرات. تأخذ المولِّدات صيغة الدوال العادية ولكنّها تستخدم عبارة yield عند إعادة البيانات. في كلّ مرة تستدعى فيها الدالة next()‎ على المولّدات تعود الأخيرة إلى المكان الذي تركته (تتذكر المولّدات جميع القيم والعبارات التي نفّذت أخيرًا). يوضح المثال التالي كيفية إنشاء المولّدات وآلية عملها: def reverse(data):     for index in range(len(data)-1, -1, -1):         yield data[index] >>> >>> for char in reverse('golf'): ...     print(char) ... f l o g يمكن إنجاز كل ما تقوم به المولّدات باستخدام مكرِّرات صنفية (class-based ...

عبارة pass في بايثون

لا تؤدي عبارة pass أي عمل على الإطلاق، ويمكن استخدامها عندما تكون عبارة معيّنة مطلوبة لغويًّا ولكنّها لا تؤدّي وظيفة معينة. فعلى سبيل المثال يؤدي تنفيذ الشيفرة التالية إلى جعل مفسّر بايثون مشغولًا وبانتظار قطع عملية التنفيذ عن طريق الضغط على مفتاحي Ctrl+C: >>> while True: ...     pass ... تستخدم هذه العبارة عادة في إنشاء أصناف مصغّرة: >>> class MyEmptyClass: ...     pass ... يمكن استخدام عبارة pass أيضًا كنصّ بديل مؤقت لدالة أو جملة شرطية معيّنة عند العمل على شيفرة جديدة، الأمر الذي ...

عرض (50 السابقة | 50 التالية) (20 | 50 | 100 | 250 | 500).