لذلك تحدثنا عن التغليف والتجريد.
ماذا عن الركن الثالث من البروتوكول الاختياري؟
إنه يسمى الميراث.
والوراثة تسمح للكائنات الجديدة أن تأخذ خصائص الكائنات الموجودة.
حتى تتمكن من وراثة الطبقات.
دعونا نلقي نظرة على مثال.
دعنا نزيل الكود السابق الذي كان لدينا ونرجع إلى مثال لعبتنا.
نريد إنشاء لعبة جديدة ولدينا أنواع مختلفة من المستخدمين.
لذلك لدينا مستخدمون يمكن أن يكونوا معالجات ، ويمكن أن يكونوا آخرين ، ويمكن أن يكونوا ، لا
أعرف ، رماة ، ولكن كل هؤلاء المستخدمين لديهم بعض الوظائف المشتركة وكل مستخدم فرعي مثل المعالجات
، والجان ، والرماة لديهم بعض الأشياء المشتركة وظائف مشتركة ، ولكن مرة أخرى ، ربما هجمات مختلفة.
لذلك باستخدام OP يمكننا فعلاً الميراث.
على سبيل المثال ، لنفترض أن لدينا مستخدمًا في الفصل هنا وسيكون لدى هذا المستخدم ، دعنا نقول ، وظيفة تسجيل الدخول.
أو طريقة تسجيل الدخول مرة أخرى ستتلقى ذاتيًا وبعد ذلك سنفترض الآن فقط أن لدينا نوعًا من
تسجيل الدخول هنا.
لذلك دعنا نقول فقط الآن طباعة المدونة.
ولأنه لكي يلعبوا لعبة ، يجب أن يقوموا بتسجيل الدخول.
الآن ، قد تتساءل ، هو ، هو ، أين هي طريقة init هنا؟
ألا يجب أن يكون لدينا طريقة init التي يتم تشغيلها أولاً؟
حسنًا ، يمكننا ذلك ، لكن إذا لم يكن لدينا أي متغيرات أو سمات نريد تعيينها للمستخدم ، حسنًا ، في هذه
الحالة لن نحتاج إلى طريقة A.
حتى الآن ، سنقول فقط أننا لسنا بحاجة إلى أي شيء لدى المستخدم بخلاف طريقة تسجيل
الدخول هذه.
لنفترض الآن أننا نريد إنشاء مجموعة من الفئات الفرعية حتى يكون لدينا معالج الفصل.
وفي الوقت الحالي ، سنقوم فقط بتمرير هنا حتى لا يكون لدينا فصل دراسي فارغ ، ولكنه سيظل يسمح لنا
ببنائه.
ثم لنفترض أن لدينا فصلًا أيضًا.
آرتشر الذي سيمر أيضًا.
أوه.
تأكد من أن لدينا أقواس هنا.
الآن ، هذا هو الشيء.
من الناحية المثالية ، كل هؤلاء السحرة والرماة هم مستخدمون أيضًا.
الصحيح.
لذلك لدينا مستخدمين.
ويمكن أن يكون لهؤلاء المستخدمين أشكال متعددة.
يمكن أن يكونوا معالجات.
يمكن أن يكونوا رماة.
يمكن أن يكونوا غيلان.
كل الشخصيات في لعبتنا.
ولكن لنفترض أن جميعهم يجب أن يقوموا بتسجيل الدخول أولاً.
كيف يمكننا التأكد من أن جميع هؤلاء المستخدمين أو الفئات لديهم أيضًا حق الوصول لتسجيل الدخول؟
حسنًا ، يمكننا استخدام الميراث.
وكيف نرث؟
بسهولة تامة ، في الواقع.
كل ما نقوم به هو بين قوسين.
اجتياز فئة الوالدين التي نريد أن نرث منها.
لنفترض أنني أفعل مستخدمًا هنا.
الآن لنضغط على تشغيل هنا.
لا اجواء.
كل شيء يبدو على ما يرام.
وبالمناسبة ، ترى الخط الأخضر هنا يخبرني أن المسافة البادئة ليست من مضاعفات أربعة لأن المسافة البادئة
يجب أن تكون أربعة في بايثون.
لذلك يمكننا فقط القيام بذلك.
لكني أحب إبقائه أصغر فقط حتى يسهل قراءته.
تمام.
لذلك دعونا ننشئ نسخة طبق الأصل من فصل دراسي هنا.
سأقوم بإنشاء معالج واحد ثم أقول.
معالج وتشغيل فئة المعالج.
الآن ، إذا قمت بطباعة هنا وفعلت ، دعنا نقول معالج الطباعة.
إذا قمت بالنقر فوق تشغيل.
أرى أنه تم إنشاء كائن المعالج.
وماذا لو لم أسجل الدخول؟
أرى ذلك.
نعم ، إنها موجودة بالفعل.
إذا قمت بتسجيل الدخول وانقر فوق تشغيل.
مرحبًا ، لقد قمت بتسجيل الدخول.
كم ذلك رائع؟
لقد ورثت من فئة المستخدم هذه الوظيفة.
وهذا حقًا قوي حقًا لأنه يمكنني الآن توسيع ساحلي.
الصحيح.
لنفترض أن هذا المعالج يحتوي على الحرف الأول.
طريقة.
الذي سيتم تشغيله عند إنشاء المعالج.
وسيكون لدينا ملف.
اسم.
والقوة التي نحصل عليها.
وهنا سنخصص اسم الذات للاسم المتساوي ، ثم نخصص قوة النقطة الذاتية لقوة متساوية.
ودعنا نضيف أيضًا طريقة أخرى.
يطلق عليه الهجوم.
وستقوم طريقة الهجوم هذه ببساطة بطباعة سلسلة F التي ستقول.
مهاجمة.
قوة.
دعنا نقول القوة الذاتية.
وبعد ذلك سنفعل الشيء نفسه للرامي.
لذا سأقوم بنسخ هذا الرمز.
لصقه هنا.
والرامي سيكون له اسم.
ودعنا نقول أنه بدلاً من القوة ، لنفترض أنها تمتلكها.
عدد الأسهم.
وعدد السهام.
ستكون السمة الجديدة التي تحصل عليها.
وبعد ذلك سيكون الهجوم جيدًا ، مهاجمًا بالسهام.
وبعد ذلك يتبقى لدينا أسهم.
سيقول السهم الأيسر عدد الأسهم فقط ويمكننا القيام بشيء ممتع حيث تنخفض الأسهم في
كل مرة تهاجم فيها.
تمام.
والآن بعد أن أصبح لدينا هذا ، فلنقم بتصغيره قليلاً حتى تتمكن من رؤيته.
ها أنت ذا.
الآن وقد حصلنا على هذا ، فلنقم بإنشاء مثيل للمعالج الأول.
مع.
لنفترض أن ميرلين بقوة 50.
ثم آرتشر.
سنقوم بإنشاء مثيل.
مثل Robin مع ، لنفترض 500 سهم أو 100 سهم.
إذن الآن سيكون لدى المعالج والرامي.
حسنًا ، سيكون لديهم تسجيل الدخول.
لكنهم سيواجهون أيضًا الهجوم ، لكنه فريد بالنسبة إلى فردهم.
الطبقات.
وستكون لديهم أيضًا خصائص مختلفة.
لنلقي نظرة.
إذا كنت سأفعل Wizard Dot.
السيد. ساحر.
نقطة واحدة.
الآن سنقول.
هجوم.
واسمحوا لي فقط العودة.
ذكاء الكود الخاص بي.
سنرى أن لدينا بعض الأخطاء.
هنا.
ماذا تقول.
اسم غير محدد self وهذا لأنني نسيت الذات بين قوسين لذا تتذكر أنه يتعين علينا دائمًا إعطاء
المعلمة الأولى self.
إذا مررنا لأسفل ، نذهب إلى Wizard Dot ، نرى أن لدينا اسمًا وقوة وهجومًا.
إذا قمت بالنقر فوق هجوم هنا وقمت بالركض.
انظر إلى أنني أهاجم بقوة 50.
إذا فعلت ، آرتشر نقطة هجوم.
في هذه الحالة ، سأهاجم بالسهام.
سهام اليسار 100.
لكن كلاهما لهما وظيفة تسجيل الدخول في نفس الوقت.
كم ذلك رائع؟
هذه هي قوة الميراث.
نحن نحافظ على كودنا جافًا ، أليس كذلك؟
نحن نتخلص من جزء الكود الذي يشاركه كلاهما ، ولكن بعد ذلك نغير الأشياء وفقًا لما
يحتاجه كل منهما.
على سبيل المثال ، يمكن أن يكون لدي أساليب وخصائص مختلفة في Wizard عن Archer
، ولكن لدي أيضًا وظيفة مستخدم مشتركة للمستخدم.
وبهذه الطريقة يحافظ على الكود الخاص بنا منظمًا ونظيفًا.
الآن دعنا نعيد التكبير حتى تتمكن من رؤيته بوضوح.
الآن ، فكرة الوراثة هذه قوية حقًا.
والمفتاح هنا هو أن لدينا فصلًا للآباء وفصولًا للأطفال.
الآن ، أحيانًا تسمى فئات الأطفال هذه الفئات الفرعية أو الفئات المشتقة لأنها فئات فرعية
من المستخدم أو مشتقة من فئة المستخدم.
دعنا نستكشف هذا الموضوع أكثر قليلاً في الفيديو التالي.