คุณรอสิ่งนี้มานานแล้วเพราะฉันหลีกเลี่ยงการพูดถึงวิธี Dunder Magic เหล่านี้มาเป็นเวลานาน
ในวิดีโอนี้ ในที่สุดเราจะเปิดเผยสิ่งที่พวกเขาทำ
ตอนนี้ เราสามารถดูว่าอินสแตนซ์ของเรามีเมธอดใดโดยใช้เมธอด rder
และเราบอกคุณว่าสิ่งเหล่านี้สืบทอดมาจากคลาสอ็อบเจ็กต์ฐานของเรา
ตอนนี้เป็นการเน้นย้ำวิธีการพิเศษของเรา
จำไว้ว่าเรามีสิ่งต่างๆ เช่น ความยาว ซึ่งช่วยให้เราบอกความยาวของอาร์เรย์ได้
สิ่งเหล่านี้ถูกนำไปใช้จริงโดยใช้วิธีการโง่เขลาเหล่านี้
ช่วยให้เราใช้ฟังก์ชันเฉพาะของ Python กับวัตถุที่สร้างผ่านชั้นเรียนของเรา
ให้ฉันแสดงให้คุณเห็นว่าฉันหมายถึงอะไร
เรากำลังจะสร้างคลาสใหม่และนี่เป็นคลาสของเล่น
ในที่นี้ เราจะนิยามของเล่นและเริ่มต้นมันด้วยตัวเอง
แล้วเราจะบอกว่ามีสีและ h
ตอนนี้เราจะบอกว่าสีเท่ากับสี
ดังนั้นสิ่งเหล่านี้จะเป็นคุณลักษณะของเรา
และ H.
สุดยอด.
มีชั้นเรียนของเรา
ตอนนี้ สมมติว่าเราต้องการสร้างรูปการกระทำ
ฟิกเกอร์แอคชั่นนี้จะถูกจำลองด้วยของเล่น สมมุติว่า สีของสีแดงและอายุ
มันใหม่เอี่ยมดังนั้นจึงเป็นศูนย์
ทีนี้ ถ้าฉันใช้บางอย่าง เช่น สมมุติว่า se tr ที่มาพร้อมกับวัตถุนี้ ถ้าฉันใช้ str หรือแอ็คชั่น
Dot underscore ขีดเส้นใต้ se tt ah like so.
และเราพิมพ์สิ่งนี้
เราเห็นว่าเราได้รับสิ่งนี้
เป็นสิ่งเดียวกับที่เราทำ
แอ็คชั่นฟิกเกอร์ SDR
แบบนี้.
ดูนั่นสิ
วิธีการขีดเส้นใต้ขีดล่างสองครั้งเหล่านี้เป็นวิธีการพิเศษที่ Python รู้จัก
ตัวอย่างเช่น Dunder STR
วิธีการพิเศษนี้ทำให้เราสามารถใช้แอ็คชั่นฟิกเกอร์แบบนี้ได้โดยใช้ฟังก์ชัน str ในตัว
ตามจริงแล้ว หากคุณไปที่เอกสารประกอบของ Python ในส่วนชื่อเมธอดพิเศษ
คุณจะเห็นว่าเราสามารถทำการปรับแต่งเบื้องต้นของวิธีการที่โง่เขลาเหล่านี้ได้
และเป็นรายการยาวของวิธีการโง่เขลาทั้งหมดที่เราสามารถใช้ได้
ตอนนี้.
อย่าไปอ่านทีละอันเลย
มีมากมายและคุณจะไม่ใช้มันบ่อยนัก
มีเพียงไม่กี่กรณีที่คุณจะใช้มัน และแนวคิดก็คือการรู้ว่าจะแก้ไขอย่างไรและทำงานอย่างไรภายใต้ประทุน
ดังนั้น.
มาดูตัวอย่างกัน
ตัวอย่างเช่น มาปรับเปลี่ยนสิ่งที่ SDR ทำ
ฉันจะกำหนดของฉันเอง
SDR ที่นี่
ฉันจะโทรหาตัวเอง
แล้วในนี้ ผมจะกลับไปทำอะไรที่แตกต่างออกไป
ฉันจะกลับมา สมมติว่า สตริง SE
นั่นคือสีที่เรียนรู้ด้วยตนเอง
ถ้าฉันเรียกใช้สิ่งนี้
ฉันโดนแดง
จำได้ไหมว่าฉันบอกว่าจะไม่แก้ไขวิธี Dunder?
บางครั้งคุณก็ได้รับอนุญาต
อาจมีบางกรณี กรณีพิเศษ ที่คุณต้องการให้ชั้นเรียนของคุณมีพฤติกรรมบางอย่าง
เช่นเดียวกับพจนานุกรม รายการ ทูเพิล และอ็อบเจ็กต์ทั้งหมดใน Python สามารถทำงานในลักษณะบางอย่างได้
วิธีเข้าถึงรายการด้วยหมายเลขดัชนีและเข้าถึงพจนานุกรมด้วยคีย์
สิ่งเหล่านี้ถูกนำมาใช้โดยใช้วิธีการมาตรฐานเหล่านี้
และคุณเห็นที่นี่ว่าเนื่องจากเราแก้ไขสิ่งนี้ ตอนนี้ SDR จะส่งกลับสีแดงเมื่อถูกเรียกบนหุ่นจำลอง
มันไม่ได้เปลี่ยนแปลงสิ่งอื่นนอกเหนือจากในรูปการกระทำ
ถ้าฉันรันนี่ คุณจะเห็นว่ามันยังรันแอคชั่นฟิกเกอร์แบบนี้
เพราะนี่คือสตริง
SDR จะแก้ไขเมื่อเราใช้กับวัตถุเฉพาะนี้เท่านั้น
เช่นนั้น
สิ่งอื่น ๆ ที่เราสามารถทำได้?
เราก็สามารถเปลี่ยนความหมายของความยาวได้เช่นกัน
ยาวจนบอกตัวเองได้
และที่นี่ฉันสามารถกลับมาได้
ตอนนี้ถ้าฉันพิมพ์
ความยาวของรูปการกระทำ
และฉันคลิกเรียกใช้
ฉันได้รับห้า?
เจ๋งมาก.
อีกอย่าง ถ้าการขีดเส้นใต้นี้ดูน่ารำคาญนิดหน่อย ซึ่งจริงๆ แล้วสำหรับฉันมันเริ่มน่ารำคาญนิดหน่อย
ฉันจะคลิกการตั้งค่าที่นี่และลบความฉลาดของโค้ดออก มันจะไม่บอกฉันว่าโค้ดของฉันถึงเมื่อไหร่
ผิด แต่หวังว่าเราจะสามารถดีบักมันเองได้
ได้เลย งั้นเราไปกันเลย
เราเพิ่งเปลี่ยนความยาว
Dunder จะกลับมาห้า
มาทดลองกันต่อครับ
เรายังทำบางอย่างได้ เช่น ขีดล่าง ขีดล่าง ลบ และลบ
ให้เราใช้คีย์เวิร์ด delete ที่เราไม่เคยเห็นมาก่อน
ลบ.
เราสามารถพูดได้ว่ากลับมา
ลบแล้ว
คุณต้องไปแบบนี้และลองพิมพ์ที่นี่
พิมพ์ถูกลบถ้าฉันคลิกเรียกใช้
ฉันเห็นว่าฉันกลับถูกลบ
ตอนนี้ คีย์เวิร์ด delete ที่ฉันยังไม่ได้สอนคุณจริงๆ เพราะมันไม่ใช่สิ่งที่คุณจะได้เห็นมากนัก
โดยปกติสิ่งนี้อาจทำให้เกิดข้อบกพร่องที่ตลกขบขันในโปรแกรมของเราซึ่งฉันชอบที่จะหลีกเลี่ยงเป็นการส่วนตัว
แต่คำหลัก delete จะลบตัวแปรบางประเภทที่เราอาจมีในโปรแกรมของเรา
เอาล่ะ มีอะไรอีกบ้าง?
มาเปลี่ยนสิ่งนี้กันเถอะ
เพื่อใช้สิ่งที่เรียกว่าโทร
และถ่านหินก็เป็นสิ่งที่น่าสนใจ
สมมติว่ามีถ่านหินเราจะกลับมาและสมมติว่าใช่
เครื่องหมายคำถาม
สิ่งที่เรียบร้อยเกี่ยวกับคาร์ลก็คือตอนนี้มันทำให้คลาสของเล่นของเรามีพลังวิเศษ
เราสามารถพูดได้ว่าแอ็คชั่นฟิกเกอร์แล้วพูดได้ว่า ด้วยการโทร ตอนนี้เราสามารถเรียกวัตถุจริงด้วยวงเล็บเหล่านี้ได้
เมื่อใช้การเรียก ผมมีวิธีพิเศษในการเรียกฟังก์ชัน ซึ่งภายใต้ประทุน วิธีที่เราสามารถเรียกใช้ฟังก์ชันได้คือใช้การเรียกที่ผิดพลาด
และถ้าฉันคลิกเรียกใช้
ฉันเข้าใจ?
ใช่.
มันเจ๋งแค่ไหน?
ไม่เป็นไร.
อันสุดท้าย เพราะฉันคิดว่าคุณเริ่มเข้าใจเรื่องนี้แล้ว
อย่างที่ฉันพูด สิ่งเหล่านี้มีให้ที่นี่
โดยปกติแล้ว คุณไม่ต้องการเขียนทับมัน แต่คุณแค่ต้องการรู้ว่าคุณมีอำนาจที่จะทำได้หากคุณเลือก
อันต่อไปเรียกว่า get item
มากำหนดรายการรับกัน
อีกครั้ง เราจะใช้ self เป็นพารามิเตอร์แรก จากนั้นสมมติว่า I สำหรับดัชนี และในที่นี้
เราจะคืนค่า self dot และเพิ่มแอตทริบิวต์ก่อนที่เราจะเพิ่มนั้น
ฉันจะบอกว่า self dot dict ของฉันสำหรับพจนานุกรมของฉันแล้วเพิ่มชื่อ
เท่ากับ โย่ โย่
และทำมีสัตว์เลี้ยงเท่ากับเท็จ?
ตอนนี้ใช้สิ่งนี้ฉันสามารถพูดได้ว่ากระเจี๊ยบของฉัน
และส่งคืนสินค้าตามดัชนีที่เราให้ไว้
ให้ฉันแสดงให้คุณเห็นว่าฉันหมายถึงอะไร
ถ้าตอนนี้ฉันพิมพ์
รูปการกระทำ
จุด
และในที่นี้ แทนที่จะทำจุด เราทำวงเล็บเหลี่ยมเหมือนกับที่เราเข้าถึงได้เพื่อรับรายการพจนานุกรม
ตอนนี้เราใช้ get item ได้แล้ว บอกว่าคุณสมบัติอะไรในชื่อ?
สมมติว่าชื่อและถ้าฉันพิมพ์โอ๊ะโอ
ลืมเพิ่ม ก.
จุลภาคที่นี่
ลองอีกครั้ง
และหากฉันเลื่อนลงมา คุณจะเห็นว่าฉันอ่านข้อผิดพลาดได้ดีมาก
ฟิกเกอร์ Namer Name ไม่ได้กำหนดไว้เพราะเป็นแอคชั่นฟิกเกอร์ไม่ใช่ fuga
มันดีกว่า.
ดูนั่นสิ
ชื่อของฉัน.
Yo Yo สามารถเข้าถึงได้โดยใช้เครื่องหมายวงเล็บนี้โดยใช้รายการรับ
ดันเดอร์
เยี่ยมมาก
ดังนั้นวิธีการพิเศษเหล่านี้จึงน่าสนใจมาก เพราะมันช่วยให้เราทำได้ดี ปรับเปลี่ยนคลาสของเราได้เอง
และคุณยังสามารถเข้าใจว่าใน Python นั้นถูกสร้างขึ้นในประเภทเริ่มต้นอย่างไร มีการเข้าถึงและความสามารถในการมีไวยากรณ์พิเศษเหล่านี้ทั้งหมด
ตอนนี้เรามีพลังนั้นเช่นกัน
มาพักผ่อนและออกกำลังกายกันหน่อย