© yu_photo/Shutterstock.com

Python’s Oops เป็นเหตุผลหลักที่บริษัทเทคโนโลยีหลายแห่งทั่วโลกต้องการให้พนักงานของตนรู้วิธีเขียนโค้ดด้วย Python การแสวงหาความรู้ของนักพัฒนาไม่มีวันสิ้นสุด และทุกๆ ปีจำเป็นต้องมีความรู้ความชำนาญมากขึ้นเพื่อรักษาความสามารถในการแข่งขัน

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

เราจะแสดงพื้นฐานของ Oops ใน Python และเราหวังว่านี่จะเป็นแรงบันดาลใจ คุณตลอดเส้นทางการเขียนโปรแกรมเพื่อเรียนรู้เพิ่มเติมและลองวิธีการเขียนโค้ดที่ใหม่และมีประสิทธิภาพมากขึ้น

การเขียนโปรแกรมเชิงวัตถุคืออะไร

การเขียนโปรแกรมเชิงวัตถุ (Oop) เป็นวิธีการสร้าง ใช้โดยนักพัฒนาในวงกว้างและเป็นกระบวนทัศน์ที่มีประโยชน์เมื่อทำงานกับโครงการขนาดใหญ่และซับซ้อน มันเป็นกระบวนทัศน์ปัจจุบันในโลกของการเขียนโปรแกรมและดูเหมือนว่าจะไม่เปลี่ยนแปลงในเร็ว ๆ นี้

เพื่อทำความเข้าใจเส้นทางการพัฒนานี้ ก่อนอื่นเราต้องกำหนดวัตถุ คิดว่าวัตถุเป็นหน่วยหนึ่งของระบบ ซึ่งเป็นระบบที่ทุกส่วนมีหน้าที่พื้นฐาน

ตัวอย่างเช่น คุณสามารถคิดว่าร่างกายมนุษย์เป็นระบบที่ทุกอวัยวะเป็นวัตถุ ผลลัพธ์สุดท้ายของผลรวมของวัตถุทั้งหมดคือมนุษย์ที่ใช้งานได้และมีสุขภาพดี

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

คลาส

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

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

เมื่อคุณกำหนดคลาสแล้ว แต่ละอ็อบเจกต์ที่สร้างขึ้นจะเป็นอินสแตนซ์พิเศษที่มีตัวแปรที่เรากำหนดไว้ใน พิมพ์เขียว. ลองคิดแบบนี้: ในโลกแห่งความเป็นจริง เรามีคลาส”มนุษย์”และแต่ละคนก็เป็นตัวอย่างของคลาสนั้นซึ่งมีตัวแปรมาจากคลาสนั้น

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

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

ไวยากรณ์ของคลาส

มาดูกันว่าไวยากรณ์สำหรับสร้างคลาสทำงานอย่างไร:

โค้ดสำหรับสร้างคลาสใน Python

©”TNGD”.com

นั่นแหล่ะ , ง่ายมาก. เราเพิ่งสร้างคลาสชื่อ Person ด้วยคีย์เวิร์ด pass Pass เป็นตัวยึดตำแหน่งที่ระบุว่าโค้ดจะไปที่ใด ช่วยให้คุณเรียกใช้โค้ดได้โดยไม่มีข้อผิดพลาด

คลาสถูกกำหนดและใช้งานได้แล้ว อย่างไรก็ตาม มันยังไม่มีคุณสมบัติใดๆ ดังนั้นมาเพิ่ม:  

การกำหนดคุณสมบัติของคลาส

©”TNGD”.com

เมธอด __init__ เป็นเครื่องมือพื้นฐานเมื่อเรากำหนดคุณสมบัติหรือแอตทริบิวต์ ช่วยให้คุณสร้างอินสแตนซ์คลาสใหม่ได้ นอกจากนี้ เมธอด __init__ ยังกำหนดสถานะเริ่มต้นของออบเจกต์ด้วยพารามิเตอร์ที่มีในคลาส

สำหรับเหตุผลที่เราจะไม่พูดถึงที่นี่ พารามิเตอร์แรกควรเป็นตัวแปรที่เรียกว่า self เสมอ โปรดจำไว้ว่า: การเยื้องมีความสำคัญมากเมื่อทำงานกับระบบ python และ Oop เมธอด __init__ ต้องเว้นวรรคสี่ช่อง และเนื้อความที่กำหนดตัวแปรต้องมีการเว้นวรรคแปดช่อง

ตอนนี้ เรามาสร้างความแตกต่างที่สำคัญเมื่อทำงานกับแอตทริบิวต์ แอตทริบิวต์ของคลาสคือชื่อของแอตทริบิวต์เหล่านั้นที่เหมือนกันสำหรับแต่ละคลาส และค่าของมันถูกกำหนดด้วยเมธอด __init__ ในทางกลับกัน เมื่อคุณเรียกใช้เมธอด __init__ สำหรับการสร้างออบเจกต์ใหม่ แอตทริบิวต์ที่สร้างขึ้นจะเรียกว่าแอตทริบิวต์อินสแตนซ์

ทำไม? แอตทริบิวต์เหล่านี้มีความเฉพาะเจาะจงสำหรับอินสแตนซ์เฉพาะของคลาส จากตัวอย่างของเรา สำหรับคลาส Person อ็อบเจ็กต์ทั้งหมดจะมีคุณสมบัติชื่อและอายุ แต่ค่าของพารามิเตอร์เหล่านี้อาจแตกต่างกันในแต่ละอินสแตนซ์ของ Person

ในตัวอย่างนี้ แอตทริบิวต์ของคลาสกำหนดค่าสากล (สปีชีส์) สำหรับวัตถุทั้งหมดที่สร้างด้วยคลาสนี้

สร้างแอตทริบิวต์สำหรับคลาส

©”TNGD”.com

The ไวยากรณ์สำหรับแอตทริบิวต์คลาสนั้นง่ายมาก อย่าลืมกำหนดแอตทริบิวต์ก่อนเมธอด __init__ และเว้นวรรคสี่ช่อง นอกจากนี้ อย่าลืมกำหนดค่าเริ่มต้นเสมอ

Objects

Objects เป็นหัวข้อในชีวิตประจำวันสำหรับโปรแกรมเมอร์ทุกคน สตริงเช่น”Hello, world”เป็นวัตถุ ตัวเลขหรืออาร์เรย์ยังเป็นวัตถุ

กล่าวอีกนัยหนึ่ง เอนทิตีใดๆ ที่มีสถานะและพฤติกรรมที่เกี่ยวข้องถือเป็นวัตถุ จำนวนเต็ม ตัวเลขทศนิยม และพจนานุกรมเป็นวัตถุทั่วไปเมื่อเขียนโค้ดด้วย Python

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

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

ตัวอย่างโค้ด: เมธอด คลาส และอินสแตนซ์แอตทริบิวต์

ตอนนี้ มาดูตัวอย่างโค้ดกัน:

Python Oops ใช้งานในโปรแกรม

©”TNGD”.com

ในโค้ดด้านบน เราได้รวมแอตทริบิวต์ทั้งหมดและเมธอดคลาสเพื่อสร้างวัตถุที่ค่อนข้างซับซ้อน ตอนนี้ เรามีคลาส Person ที่มีคุณสมบัติและการดำเนินการบางอย่างที่เราสามารถขยายเพื่อเพิ่มสิ่งต่างๆ ให้กับโค้ดของเราได้

การสืบทอดและความหลากหลายใน Python’s Oops

เมื่อคลาสรับคุณสมบัติและเมธอดของคลาสอื่น เราเรียกกระบวนการนี้ว่า การสืบทอด คลาสที่รับค่ามาเรียกว่าคลาสลูก และแน่นอนว่าคลาสพาเรนต์คือคลาสที่รับแอตทริบิวต์ของมัน

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

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

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

Encapsulation ใน Python’s Oops

เรามาพูดถึงแนวคิดหลักข้อสุดท้ายที่เกี่ยวข้องกับการเขียนโปรแกรมเชิงวัตถุ

การห่อหุ้มเป็นแนวคิดด้านความปลอดภัยและหลักปฏิบัติพื้นฐานสำหรับการทำงานที่ถูกต้องของระบบ Oop ใดๆ โดยพื้นฐานแล้วประกอบด้วยการจัดเรียงข้อมูลเป็นหน่วยแยกกัน เพื่อให้ข้อมูลนี้สามารถเข้าถึงได้ด้วยคีย์เวิร์ดที่ถูกต้องเท่านั้น

นี่เป็นวิธีที่สะดวกในการป้องกันการแก้ไขข้อมูลสำคัญโดยไม่ได้ตั้งใจในซอฟต์แวร์ใดๆ

ตัวอย่างเช่น คลาสเป็นหน่วยห่อหุ้ม ข้อมูลเกี่ยวกับแอตทริบิวต์ ฟังก์ชัน และเมธอดสามารถเข้าถึงได้ผ่านคลาสเท่านั้น ออบเจกต์ทำงานในลักษณะเดียวกัน: หากคุณต้องการเปลี่ยนข้อมูลภายในออบเจ็กต์ คุณต้องเรียกใช้เมธอดเฉพาะ

ข้อดีของการเขียนโปรแกรมเชิงวัตถุคืออะไร

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

ด้วย Oops เราสามารถออกแบบและทำงานกับข้อมูลที่ซับซ้อน จากนั้นใช้ข้อมูลนี้เพื่อสร้างฟังก์ชันการทำงานใดๆ ที่เราต้องการ เราสามารถกำหนดวิธีการสร้างวัตถุ วิธีการทำงาน และลักษณะการทำงานที่ได้รับ

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

อธิบายแนวคิดของ Python Oops พร้อมตัวอย่าง

สิ่งสำคัญพื้นฐานคือการเน้นวัตถุ โครงสร้างการเขียนโปรแกรมและประมวลผลข้อมูลในลักษณะที่ไม่เป็นเชิงเส้น ปรับเปลี่ยนได้ และขยายได้ สิ่งนี้เพิ่มประสิทธิภาพและทำให้ภาษาโปรแกรมที่ใช้ oop สามารถเข้าถึงได้มากขึ้น

ตอนนี้คุณรู้เกี่ยวกับเครื่องมือต่างๆ เช่น คลาสและออบเจกต์ที่จะช่วยคุณสร้างโปรแกรมที่คุณนึกออก นอกจากนี้ การเรียนรู้เกี่ยวกับแนวคิด เช่น การสืบทอดและการห่อหุ้มจะเพิ่มมูลค่าให้กับวิธีที่คุณจัดการกับโค้ดของคุณ

เครื่องมือเหล่านี้เป็นเครื่องมือระดับมืออาชีพที่มีความซับซ้อนมากขึ้นทุกๆ แนวคิดใหม่ๆ ที่คุณเรียนรู้ อย่างไรก็ตาม การเรียนรู้พื้นฐานจะช่วยให้คุณมีรากฐานที่แข็งแกร่งในการสร้างต่อไปได้เสมอ หากคุณต้องการข้อมูลเพิ่มเติม คุณควรตรวจสอบเอกสารอย่างเป็นทางการของ Python!

ตอนนี้ ได้เวลาเขียนโค้ดและลองใช้ แนวคิดทั้งหมดนี้ ขอให้โชคดี!

อธิบายแนวคิดของ Python Oops พร้อมตัวอย่าง คำถามที่พบบ่อย (คำถามที่พบบ่อย) 

ฉันตั้งชื่อชั้นเรียนได้ไหม

ใช่ คุณทำได้ ชื่อใดก็ได้ที่ใช้ได้ แต่ชื่อที่ชัดเจน กระชับ และสื่อความหมายจะดีกว่าเสมอ

การสืบทอดทำงานอย่างไร

การสืบทอดช่วยให้เรานำรหัสกลับมาใช้ใหม่ได้ โดยรับคุณสมบัติและฟังก์ชันของคลาสพาเรนต์ไปยังคลาสย่อย

การเขียนโปรแกรมเชิงวัตถุคืออะไร

โดยย่อ Oop คือการเขียนโปรแกรม กระบวนทัศน์ที่ทำงานร่วมกับคุณสมบัติและพฤติกรรมที่จัดกลุ่มเป็นหน่วยเฉพาะที่เรียกว่าวัตถุ มันเสนอให้เราเห็นว่าโค้ดเป็นการผสมผสานที่ปรับขนาดได้ของวัตถุเหล่านี้

เมธอดและฟังก์ชันต่างกันอย่างไร

ในทฤษฎี Oop ไม่มีความแตกต่างใดๆ ความแตกต่างอยู่ในการทำงาน: เมธอดเป็นส่วนหนึ่งของอินสแตนซ์ของคลาส โดยพื้นฐานแล้ว คำจำกัดความของเมธอดจะอยู่ในคลาสเสมอ ถ้าไม่ใช่ เราจะเรียกมันว่าฟังก์ชัน ซึ่งสามารถนิยามในภาษาไพธอนด้วยอนุภาค “def”

oop ทำงานในลักษณะเดียวกันในทุกภาษาหรือไม่

ใช่และไม่ใช่ กระบวนทัศน์จะเหมือนกันสำหรับทุกภาษาที่ใช้ oop อย่างไรก็ตาม มีภาษาที่สร้างขึ้นจากกระบวนทัศน์อื่นซึ่งมีการใช้งานที่เฉพาะเจาะจงมาก ภาษาโปรแกรมที่ได้รับความนิยมสูงสุด เช่น Java, Javascript, Python และ C ล้วนมีแนวคิดเกี่ยวกับ oop เหล่านี้เป็นหลัก

By Henry Taylor

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