เสาหลักแห่งความหวังสุดท้ายที่จะไป
เราได้พูดคุยเกี่ยวกับการห่อหุ้ม เกี่ยวกับสิ่งที่เป็นนามธรรม และการสืบทอด
แล้วก็มีอันที่สี่ซึ่งมีคำที่ค่อนข้างยาก นั่นคือ ความหลากหลาย
นั่นหมายความว่าอย่างไร?
โพลี หมายถึง มากมาย และ ism หมายถึงรูปแบบหลายรูปแบบ
ตอนนี้เรารู้แล้วว่าเมธอดเป็นของอ็อบเจกต์ใช่ไหม
เราใช้คีย์เวิร์ด self เพื่อดำเนินการกับอ็อบเจ็กต์ที่ได้รับการยกตัวอย่าง
ตอนนี้ใน Python แนวคิดเรื่องความหลากหลายนี้หมายถึงวิธีที่คลาสอ็อบเจ็กต์สามารถใช้ชื่อเมธอดเดียวกันได้
แต่ชื่อเมธอดเหล่านั้นสามารถทำหน้าที่ต่างกันไปตามสิ่งที่เรียก
ตอนนี้ฟังดูสับสนมาก
เลยมาดูโค้ดกัน
เรามีตัวช่วยสร้างผู้ใช้และคลาสนักธนู
และอย่างที่ฉันพูดถึง polymorphism คลาสอ็อบเจ็กต์ต่างๆ สามารถแชร์ชื่อเมธอดได้
ดังนั้นเราจึงมี TAC ที่แชร์กันที่นี่ แต่แต่ละอันทำสิ่งที่แตกต่างไปตามแอตทริบิวต์
ตัวอย่างเช่น เมื่อฉันทำ Wizard one โจมตี
มาทำกัน
ตัวช่วยสร้างการโจมตีจุดเดียว
ถ้าฉันคลิกวิ่ง ฉันจะโจมตีด้วยพลัง 60 เพราะวิซาร์ดมีความหมายพิเศษในการโจมตีเมื่อเทียบกับอาร์เชอร์
พวกเขาแตกต่างกัน
ดังนั้นแม้ว่าพวกเขาจะใช้ชื่อเมธอดเดียวกันเนื่องจากอ็อบเจ็กต์ที่เรียกมัน ผลลัพธ์จะแตกต่างกัน
เราก็สามารถทำสิ่งที่น่าสนใจทีเดียวได้ที่นี่
สมมุติว่าฉันมีพ่อมด 1 ตัว แล้วเราจะมี Archer หนึ่งตัว และ Archer หนึ่งตัวจะเป็น Robin
และโรบินมีเวลา 30 ชั่วโมงแล้ว
สิ่งที่ฉันสามารถทำได้ที่นี่จริง ๆ แล้วเรียกว่าพวกเขาในรูปแบบต่างๆ
ตัวอย่างเช่น ฉันสามารถสร้างฟังก์ชันใหม่ทั้งหมดที่เรียกว่า การโจมตีของผู้เล่น
และการโจมตีของผู้เล่นคนนี้ก็มีตัวละคร
และในที่นี้เราสามารถพูดได้ว่า คาแรคเตอร์ จุด การโจมตี
และตอนนี้ถ้าฉันเรียกใช้รหัสนี้แล้วพูดว่า
การโจมตีของผู้เล่น
พ่อมดที่หนึ่ง
และฉันดำเนินการนี้
ฉันจะโจมตีด้วยพลังหนึ่ง
ถ้าฉันเล่นการโจมตีของเรา ให้ Archer อยู่ที่นี่ถ้าฉันคลิก Run
คุณเห็นว่าฟังก์ชันเดียวกันให้ผลลัพธ์ที่แตกต่างกัน แม้ว่าเราจะเรียกสิ่งเดียวกันเนื่องจากวัตถุที่เราส่งผ่านเข้าไป
ความหลากหลาย
อีกวิธีในการแสดงสิ่งนี้คือถ้าเราทำ for loop
ถ้าฉันทำอย่างนั้น สมมติว่าตัวละครเข้ามา และเพิ่ม Wizard one และ Archer one และในรายการ
และถ้าฉันพิมพ์ที่นี่หรือให้เรียกใช้ character dot attack
ถ้าฉันคลิกเรียกใช้ที่นี่
อีกครั้ง ฉันมีเอาต์พุตที่แตกต่างกันสองแบบ แม้ว่าฉันจะเรียกเมธอดเดียวกันเนื่องจากอ็อบเจ็กต์ต่างกัน
และนี่เป็นแนวคิดที่ทรงพลังจริงๆ ใช่ไหม
เนื่องจากเราสามารถปรับแต่งสิ่งนี้ได้ตามความต้องการเฉพาะของเรา แม้ว่า สมมติว่าผู้ใช้มีการโจมตีก็ตาม
วิธี.
และวิธีการโจมตีเริ่มต้นนี้คือ สมมติว่า พิมพ์ ไม่ทำอะไรเลย เพราะมันเป็นเพียงผู้ใช้
แม้ว่าฉันจะเรียกใช้สิ่งเหล่านี้และสมมติว่าตัวช่วยสร้างการพิมพ์หนึ่ง
และสมมุติว่า dot attack ถ้าฉันคลิก Run
มันจะแทนที่การโจมตีเดิม ๆ เพราะเรามีวิธีนั้นในคลาสวิซาร์ดของเราอยู่แล้ว
แต่สมมติว่าฉันต้องการให้ทั้งผู้ใช้และวิซาร์ดใช้วิธีการโจมตี
ฉันจะทำสิ่งนี้ได้อย่างไร
ตอนนี้.
นี่คือสิ่งที่เราจะสำรวจเพิ่มเติมอีกเล็กน้อยในวิดีโอหน้า
แต่ตอนนี้ ฉันสามารถพูดได้ว่าผู้ใช้ dot attack
และให้ตัวเอง
เพราะฉันยอมรับผู้ใช้เป็นพารามิเตอร์ของฉันที่นี่
จากนั้นฉันสามารถเรียกใช้ user dot attack ได้
มาดูกันว่าเกิดอะไรขึ้นที่นี่
ถ้าฉันคลิกเรียกใช้
ฉันไม่ได้ทำอะไรเลยและโจมตีด้วยพลัง 60
ดังนั้นความหลากหลายทำให้เรามีหลายรูปแบบ
มันคือความสามารถในการกำหนดวิธีการใหม่สำหรับคลาสที่ได้รับเหล่านี้นั่นคือวิซาร์ดและอาร์เชอร์
และอ็อบเจ็กต์ที่ได้รับการสร้างอินสแตนซ์สามารถทำงานในรูปแบบต่างๆ ได้หลากหลายตามลักษณะที่แตกต่างกัน
และสิ่งนี้มีประโยชน์เพราะเราสามารถปรับเปลี่ยนคลาสของเราตามความต้องการเฉพาะของเราได้
แต่ยังไม่ต้องพูดซ้ำในกรณีที่เราต้องการใช้บางอย่างเช่นการโจมตีจากผู้ใช้ภายในตัวช่วยสร้าง
ดังนั้นคุณมีมัน
สี่เสาหลักของการห่อหุ้ม OP
สิ่งที่เป็นนามธรรม
การสืบทอดและสุดท้ายความหลากหลาย
ตอนนี้.
ไม่มีวิดีโอหรือหนังสือจำนวนเท่าใดที่จะสอนคุณอย่างชัดเจนว่าเมื่อใดควรใช้อะไร
อย่างไรก็ตาม แนวคิดในที่นี้คือต้องเข้าใจว่าพลังเหล่านี้มีอยู่ใน OP
คุณจะไม่พูดว่า โอ้ ฉันต้องใช้ความหลากหลาย
ไม่ ส่วนใหญ่คุณแค่เขียนโค้ดและมันเกิดขึ้นที่คุณกำลังเขียนโค้ดในลักษณะที่เน้นความหลากหลาย
นี่เป็นเพียงพลังของ OP แม้ว่าสิ่งเหล่านี้จะเป็นคำพูดที่ยิ่งใหญ่
ในตอนท้าย เราได้เรียนรู้วิธีใช้พวกมันเพื่อจัดโครงสร้างโค้ดของเราให้มีประสิทธิภาพและสะอาด
และนั่นคือประเด็นทั้งหมด
มันคือทั้งหมดที่เกี่ยวกับการจัดระเบียบโค้ดของเรา
ตอนนี้ พวกคุณบางคนอาจจะสับสนเล็กน้อยตอนที่ฉันทำผู้ใช้รายนี้โจมตีตัวเอง
ในวิดีโอหน้า ฉันต้องการสำรวจสิ่งนี้อีกเล็กน้อย
เจอกันในนั้นครับ