Metaclass คืออะไร

เมตาคลาสจะใช้ในการเขียนโปรแกรมเชิงวัตถุ (OOP) และโดยทั่วไปจะคิดว่าเป็นคลาสของคลาส เช่นเดียวกับข้อมูลเมตาส่วนใหญ่เมตาคลาสจะทำงานอยู่หลังโปรแกรมและผู้ใช้จะไม่เห็น metaclass สามารถแก้ไขข้อมูลจากชั้นเรียนและสามารถเชื่อมโยงกับหนึ่งหรือหลายชั้นขึ้นอยู่กับโครงสร้างการเข้ารหัส ไม่ใช่โครงสร้าง OOP ทั้งหมดที่รวมการเข้ารหัส metaobject และบางคนอาจเสนอการเข้ารหัส metaobject ในรูปแบบขั้นสูงเท่านั้น

ในการเข้ารหัสเกือบทุกประเภทการเข้ารหัสเมตาคือแท็กหรือบรรทัดของรหัสที่ทำงานบนโปรแกรม แต่ผู้ใช้จะไม่เห็นอย่างเปิดเผย ข้อมูล Meta อยู่เหนือโค้ดและสามารถแก้ไขข้อมูลบางส่วนหรือเพิ่มลงในโปรแกรมได้โดยไม่รบกวนโปรแกรมโดยตรง ใน OOP metaclass จะใช้ในการเรียนและปรับเปลี่ยนพฤติกรรมของมัน

คลาสใน OOP คือชุดของอินสแตนซ์หรือวัตถุที่อยู่ภายใต้คำศัพท์หนึ่งร่ม ตัวอย่างเช่นโปรแกรมเมอร์สามารถสร้างคลาสที่เรียกว่า "บ้าน" ภายใต้สิ่งนี้โปรแกรมเมอร์สร้างวัตถุที่ปรับเปลี่ยนหรือทำซ้ำด้านที่พบบ่อยในบ้านเช่นห้องพักเฟอร์นิเจอร์และผู้คน ในขณะที่คลาสสามารถแก้ไขวัตถุเหล่านี้ได้ metaclass จะทำงานในการปรับเปลี่ยนคลาสเอง

คลาสใน OOP โดยทั่วไปจะเป็นแบบไดนามิกและอาจมีการเปลี่ยนแปลงมากมายก่อนที่โปรแกรมจะเสร็จสิ้น Metaclasses เป็นข้อมูลแบบสแตติกที่ไม่ค่อยเปลี่ยนแปลงเว้นแต่โปรแกรมเมอร์จะพบว่าข้อมูลเมตาทำงานไม่ถูกต้อง สิ่งนี้ทำให้ metaclasses ไม่สามารถทำงานกับข้อมูลที่เปลี่ยนแปลงได้โดยไม่ตั้งใจและยังช่วยให้แน่ใจว่าตัวดัดแปลงพฤติกรรมไม่สามารถจัดการได้

ขึ้นอยู่กับความต้องการของโปรแกรมเมอร์เมตาคลาสจะเชื่อมโยงกับคลาสเดียวหรือหลายคลาสพร้อมกัน โปรแกรมเมอร์ส่วนใหญ่มักจะเชื่อมต่อ metaclass กับหนึ่งคลาสและเพิ่มกฎหรือพฤติกรรมที่ไม่ซ้ำกันลงในการเข้ารหัส metaobject หากมีหลายคลาสที่ทุกคนสามารถได้รับการปรับเปลี่ยนพฤติกรรมเดียวกันข้อมูลเมตาจะถูกนำไปใช้กับคลาสที่แตกต่างกันหลายคลาส สิ่งนี้เป็นไปได้เพราะการเขียนรหัส metaobject นั้นมีชื่อว่าและสามารถเรียกได้ง่ายเมื่อต้องการ

แม้ว่านี่จะเป็นเหตุการณ์ที่เกิดขึ้นทั่วไปในโปรแกรมระดับกลางถึงระดับสูงบางโครงสร้าง OOP ไม่ได้เสนอ metaclasses นี่อาจเป็นเพราะไม่มีความจำเป็นสำหรับพวกเขาหรือมีวัตถุหรือคลาสอื่น ๆ ที่มีฟังก์ชั่นที่คล้ายกัน แต่เรียกว่าอย่างอื่น โครงสร้างการเข้ารหัสบางอย่างอาจเสนอเฉพาะเมทาคลาสที่ซับซ้อนและขั้นสูงเท่านั้น