ما هو الغرض من فئة "كائن" الفئة في بيثون؟
-
24-09-2019 - |
سؤال
جميع python المدمجة هي فئات فرعية من object
واجهت العديد من الفئات المعرفة من قبل المستخدم والتي هي أيضا. لماذا ا؟ ما هو الغرض من الفصل object
؟ إنها مجرد فئة فارغة ، أليس كذلك؟
المحلول
باختصار ، يضع المهور السحرية المجانية.
في فترة طويلة ، Python 2.2 واستخدمت في وقت سابق "الطبقات النمط القديم". لقد كانت تنفيذًا خاصًا للفئات ، وكان لديهم بعض القيود (على سبيل المثال ، لم تتمكن من الفئات الفرعية المصممة). كان الإصلاح لهذا هو إنشاء نمط جديد من الفصل. ولكن ، فإن القيام بذلك سيشمل بعض التغييرات المتوافقة مع الخلف. لذلك ، للتأكد من أن الكود المكتوب لفصول النمط القديم سيظل يعمل ، object
تم إنشاء الفصل ليكون بمثابة طبقة فائقة لجميع الفصول الدراسية الجديدة. لذلك ، في بيثون 2.x ، class Foo: pass
سيخلق فصلًا قديمًا على الطراز القديم و class Foo(object): pass
سيقوم بإنشاء فئة نمط جديدة.
لفترة أطول ، انظر Guido's توحيد الأنواع والفصول في بيثون 2.2.
وبشكل عام ، من الجيد الدخول @property
Decorator هو واحد يتبادر إلى الذهن) لن يعمل مع الطبقات القديمة.
نصائح أخرى
إجابة قصيرة: التصنيف الفرعي object
يجعلها بفعالية أسلوب جديد الفصل (لاحظ أن هذا غير ضروري منذ تلقائي في بيثون 3.x)
من أجل الفرق بين new style
فصول و old style
الفصول: انظر هذا السؤال stackoverflow. للحصول على القصة الكاملة: انظر هذه الكتابة الجميلة على أنواع البايثون والكائنات.
يتعلق الأمر بـ "النمط الجديد" من الفصول الدراسية. يمكنك قراءة المزيد عنه هنا: http://docs.python.org/tutorial/classes.html#multiple-inheritance وكذلك هنا: http://docs.python.org/reference/datamodel.html#new-style-and-classic classes
سيتيح لك استخدام الفصول الدراسية الجديدة استخدام "ميزات Python الأحدث والمتعددة الاستخدامات مثل __slots__ ، والواصفات ، والخصائص ، و __getattribute __ ()."
صحيح ، لكنه يمثل الفصل ك أسلوب جديد صف دراسي. يجب أن تستخدم الفصول المطورة حديثًا object
قاعدة لأنها تكلف القليل والمستقبل الرمز الخاص بك.
النسخة القصيرة هي أن الفئات الكلاسيكية ، التي لم تكن بحاجة إلى فئة فائقة ، لديها قيود لا يمكن العمل عليها دون كسر الكثير من الكود القديم. لذلك قاموا بإنشاء مفهوم الطبقات على الطراز الجديد والتي من الفئة الفرعية من object
, ، والآن يمكنك القيام بأشياء رائعة مثل تحديد الخصائص ، والفئة الفرعية dict
لم يعد تمرينًا في الألم والبق الغريب.
التفاصيل موجودة في القسم 3.3 من مستندات بيثون: الطبقات الجديدة والكلاسيكية.
قدم بيثون 2.2 "فصول نمط جديدة" التي كانت لديها عدد من الميزات الإضافية بالنسبة إلى فئات النمط القديمة التي لم تكن كائن الفئة الفرعية. كان كائن الفئات الفرعية هو الطريقة المختارة للإشارة إلى أن فصلك يجب أن يكون فئة جديدة من النمط ، وليس أسلوبًا قديمًا.