9.7 การลบอ็อบเจกต์
การลบอ็อบเจกต์การลบอ็อบเจกต์เพื่อให้หน่วยความจำได้ปลดปล่อยทรัพยากรให้โปรแกรมได้ใช้ให้เกิดประโยชน์สูงสุด เพื่อความรวดเร็วในการประมวลผลอ็อบเจกต์อื่น ๆ การลบอ็อบเจกต์จะใช้กับอ็อบเจกต์ที่ไม่ต้องการใช้ ซึ่งภาษาไพธอนจะจัดการด้วยตนเองได้ โดยวิธีการที่เรียกว่า garbage collection เมื่อมีการประมวลผลคำสั่งจะมีการเข้าไปตรวจสอบอ็อบเจกต์นั้น ๆ และเพิ่มค่าให้กับอ็อบเจกต์ที่เรียกใช้ครั้งละ 1 และอ็อบเจกต์ใดที่ไม่ถูกเรียกใช้งานจะถูกลบไปครั้งละ 1 เช่นกัน เมื่อตรวจสอบว่าอ็อบเจกต์ใดไม่ถูกใช้งานจนครบกำหนดที่ 0 แล้ว โปรแกรมจะลบอ็อบเจกต์นั้นออกจากหน่วยความจำโดยอัตโนมัติทันที ในกรณีที่ต้องการลบอ็อบเจกต์ด้วยตนเอง จะใช้เมท็อดพิเศษ คือ __del__() หรือที่เรียกอีกอย่างว่า destructor แล้วเรียกใช้คำสั่ง del<ชื่ออ็อบเจกต์> ดังตัวอย่างในภาพที่ 9.9
ภาพที่ 9.9 แสดงคำสั่งการลบอ็อบเจกต์
ผลลัพธ์ของโปรแกรมดังแสดงในภาพที่
9.10
x, y = 3 5x, y = 10 25 x, y = 12 32 point1 id = 33245784 point1 id = 33247024 point3 id = 33287264 Point destroyed Point destroyed Point destroyed |
ภาพที่ 9.10 แสดงผลลัพธ์การลบอ็อบเจกต์
จากภาพที่ 9.10 เป็นการแสดงผลค่า
x, y ที่ตำแหน่งจุดต่าง ๆ เพราะเป็นการประกาศสร้าง
อ็อบเจกต์ point1, point2 และ point3 ด้วยอาร์กิวเมนต์ที่แตกต่างกัน
การเรียกใช้คลาสจะไม่เรียกคอนสตรักเตอร์ที่รับค่าและกำหนดค่าพร้อมทั้งสั่งให้แสดงผลค่า
x, y ดังนั้นจึงแสดงค่าดังกล่าวออกมาทางจอภาพ
ในขณะเดียวกันยังสั่งให้แสดง id ของแต่ละคลาสที่โปรแกรมหลัก หลังจากนั้นมีการใช้คำสั่งลบอ็อบเจกต์ทั้ง
3 คำสั่งนี้จะไปเรียกเมท็อด __del__() ซึ่งหน้าที่หลักคือลบอ็อบเจกต์พร้อมทั้งแสดงผลข้อความว่าถูกลบออกไป
ไม่มีความคิดเห็น:
แสดงความคิดเห็น