ปัญหาหลักของ __sub__ คือสามารถใช้สร้างประเภทย่อยที่ไม่เข้ากันกับประเภทเดิม
def __sub__(self, other): """Subtract two vectors.""" if len(self) != len(other): raise ValueError("Cannot subtract vectors of different lengths.") return Vector([x - y for x, y in zip(self, other)])
นี่คือคำจำกัดความของตัวดำเนินการลบสำหรับวัตถุเวกเตอร์ ถ้าเวกเตอร์สองตัวที่ถูกลบมีความยาวไม่เท่ากัน มันจะเพิ่ม ValueError มิฉะนั้น จะส่งคืนวัตถุเวกเตอร์ใหม่ซึ่งมีส่วนประกอบเป็นความแตกต่างของส่วนประกอบที่สอดคล้องกันของเวกเตอร์อินพุตสองตัว
_sub_, ข้อโต้แย้งอื่น ๆ ด้วยตนเอง
ใน Python อาร์กิวเมนต์ย่อยคืออาร์กิวเมนต์ที่เป็นส่วนหนึ่งของอาร์กิวเมนต์อื่น ตัวอย่างเช่น ในโค้ดต่อไปนี้ อาร์กิวเมนต์แรก (x) เป็นอาร์กิวเมนต์ย่อยของอาร์กิวเมนต์ที่สอง (y):
x = 5
ย = 10
ในกรณีนี้ x และ y เป็นอาร์กิวเมนต์ย่อยของอาร์กิวเมนต์ที่สาม (z)
อินสแตนซ์ของคลาส
ใน Python คลาสคืออินสแตนซ์ของคลาส คลาสคือเทมเพลตสำหรับสร้างวัตถุ คุณสร้างอินสแตนซ์ของคลาสโดยใช้คีย์เวิร์ดคลาสตามด้วยชื่อของคลาส ตัวอย่างเช่น ในการสร้างอินสแตนซ์ของคลาส MyClass คุณจะต้องใช้คำสั่งต่อไปนี้:
คลาสของฉัน = คลาสของฉัน ()
คุณยังสามารถสร้างอินสแตนซ์ของคลาสได้โดยใช้ฟังก์ชันตัวสร้างที่กำหนดไว้ในคลาส ฟังก์ชันคอนสตรัคเตอร์รับหนึ่งอาร์กิวเมนต์ ซึ่งเป็นชื่อของวัตถุที่คุณต้องการสร้าง ตัวอย่างเช่น ในการสร้างอินสแตนซ์ของคลาส MyClass และเรียกใช้ฟังก์ชันคอนสตรัคเตอร์ คุณจะต้องใช้คำสั่งต่อไปนี้:
myclass = MyClass(ชื่อ=”จอห์น”)
วิธีการมายากล
ไม่มีคำตอบเดียวสำหรับคำถามนี้ เนื่องจากวิธีที่ดีที่สุดในการเข้าถึง magic methode ใน Python จะแตกต่างกันไปขึ้นอยู่กับความต้องการเฉพาะของคุณ อย่างไรก็ตาม เคล็ดลับบางประการเกี่ยวกับวิธีใช้เมธอดมหัศจรรย์ใน Python รวมถึงการใช้เพื่อทำให้งานที่น่าเบื่อเป็นไปโดยอัตโนมัติหรือเพื่อดำเนินการที่ซับซ้อนอย่างรวดเร็วและง่ายดาย นอกจากนี้ ตรวจสอบให้แน่ใจเสมอว่าคุณเข้าใจถึงความเสี่ยงที่อาจเกิดขึ้นจากการใช้วิธีมายากล เนื่องจากอาจเป็นอันตรายได้หากใช้ไม่ถูกต้อง