Python คลาสและวัตถุ [พร้อมตัวอย่าง]
เผยแพร่แล้ว: 2021-06-25OOP – ย่อมาจาก Object-Oriented Programming – เป็นกระบวนทัศน์ที่อาศัยอ็อบเจกต์และคลาสเพื่อสร้างโปรแกรมที่ใช้งานได้ OOP ทำงานบนโมดูลาร์ของโค้ด และคลาสและอ็อบเจ็กต์ช่วยในการเขียนโค้ดง่ายๆ ที่นำกลับมาใช้ใหม่ได้ ซึ่งสามารถใช้เพื่อสร้างคุณลักษณะและโมดูลซอฟต์แวร์ขนาดใหญ่ขึ้น C ++, Java และ Python เป็นสามภาษาการเขียนโปรแกรมเชิงวัตถุที่ใช้บ่อยที่สุด อย่างไรก็ตาม เมื่อพูดถึงกรณีการใช้งานในปัจจุบัน เช่น Data Science และ Statistical Analysis Python เหนือกว่าอีกสองกรณี
ไม่น่าแปลกใจเลยที่นักวิทยาศาสตร์ข้อมูลทั่วโลกต่างสาบานด้วยความสามารถของภาษาการเขียนโปรแกรม Python หากคุณกำลังวางแผนที่จะเริ่มต้นอาชีพใน Data Science และกำลังมองหาผู้เชี่ยวชาญ Python การรู้เกี่ยวกับคลาสและวัตถุควรเป็นอันดับแรกของคุณ
จากบทความนี้ เราจะช่วยให้คุณเข้าใจความแตกต่างทั้งหมดที่อยู่เบื้องหลังอ็อบเจกต์และคลาสใน Python ควบคู่ไปกับวิธีที่คุณสามารถเริ่มต้นสร้างคลาสของคุณเองและทำงานกับพวกมัน
สารบัญ
ชั้นเรียนใน Python
คลาสใน Python เป็นต้นแบบที่ผู้ใช้กำหนดโดยใช้วัตถุที่สร้างขึ้น พูดง่ายๆ คือ คลาสเป็นวิธีการรวม ข้อมูล และ การทำงาน เข้าด้วยกัน คำหลักสองคำมีความสำคัญที่ควรทราบ ข้อมูลหมายถึงตัวแปรใด ๆ ที่สร้างขึ้นหรือกำหนดไว้ในขณะที่ฟังก์ชันหมายถึงการดำเนินการใด ๆ ที่สามารถทำได้กับข้อมูลนั้น เมื่อรวมกับข้อมูลและฟังก์ชันที่รวมอยู่ในแพ็คเกจเดียว เราจึงได้รับคลาส
เพื่อให้เข้าใจถึงความจำเป็นในการสร้างชั้นเรียน ให้พิจารณาตัวอย่างง่ายๆ ต่อไปนี้ สมมติว่าคุณต้องการติดตามแมวในละแวกของคุณที่มีลักษณะแตกต่างกัน เช่น อายุ สายพันธุ์ สี น้ำหนัก ฯลฯ คุณสามารถใช้รายการและติดตามองค์ประกอบในลักษณะ 1:1 กล่าวคือ คุณสามารถติดตามสายพันธุ์ไปยัง อายุหรืออายุถึงน้ำหนักโดยใช้รายการ เกิดอะไรขึ้นถ้ามีแมว 100 ตัว? เกิดอะไรขึ้นถ้ามีคุณสมบัติที่จะเพิ่มเพิ่มเติม? ในสถานการณ์เช่นนี้ การใช้รายการมักจะไม่เป็นระเบียบและไม่เป็นระเบียบ
นั่นคือสิ่งที่ชั้นเรียนเข้ามา!

คลาสช่วยคุณสร้างโครงสร้างข้อมูลที่ผู้ใช้กำหนดซึ่งมีสมาชิกข้อมูล (ตัวแปร) และฟังก์ชันสมาชิกเป็นของตัวเอง คุณสามารถเข้าถึงตัวแปรและเมธอดเหล่านี้ได้ง่ายๆ โดยการสร้างอ็อบเจ็กต์สำหรับคลาส (เราจะพูดถึงเรื่องนี้ในภายหลัง) ดังนั้น ในแง่หนึ่ง คลาสก็เหมือนกับพิมพ์เขียวสำหรับออบเจกต์
นอกจากนี้ การสร้างคลาสจะสร้างอ็อบเจ็กต์ประเภทใหม่โดยอัตโนมัติ ซึ่งช่วยให้คุณสามารถสร้างออบเจ็กต์ประเภทเดียวกันได้มากขึ้น แต่ละอินสแตนซ์ของคลาสสามารถมีแอตทริบิวต์ที่แนบมาเพื่อรักษาสถานะได้ อินสแตนซ์ของคลาสสามารถมีเมธอด (ตามที่กำหนดโดยคลาส) เพื่อแก้ไขสถานะได้
บางจุดในคลาส Python:
- คลาสถูกสร้างขึ้นโดยใช้ คลาส คีย์เวิร์ด
- คุณลักษณะคือตัวแปรเฉพาะสำหรับคลาสที่คุณสร้างขึ้น
- คุณลักษณะเหล่านี้จะเปิดเผยต่อสาธารณะเสมอ และสามารถเข้าถึงได้โดยใช้ตัวดำเนินการ dot หลังชื่อคลาส ตัวอย่างเช่น ClassName.AttributeName จะดึงรายละเอียดแอตทริบิวต์เฉพาะของคลาสนั้น ๆ
ไวยากรณ์สำหรับการกำหนดคลาส:
คลาส ชื่อคลาส:
# คำชี้แจง-1
.
.
.
# งบ-N
ตัวอย่างเช่น:
คลาสแมว:
ผ่าน
ในตัวอย่างข้างต้น คีย์เวิร์ด class ระบุว่าคุณกำลังสร้างคลาสตามด้วยชื่อของคลาส (Cat ในกรณีนี้) ยังไม่ได้กำหนดบทบาทของคลาสนี้
ข้อดีของการใช้คลาสใน Python
- ชั้นเรียนช่วยให้คุณจัดเก็บข้อมูลประเภทต่างๆ ได้อย่างเหมาะสมในที่เดียว ด้วยวิธีนี้ คุณจะรักษาโค้ดให้สะอาดและเป็นโมดูล ช่วยเพิ่มความสามารถในการอ่านโค้ดของคุณ
- การใช้คลาสช่วยให้คุณใช้ประโยชน์จากกระบวนทัศน์ OOP อื่นที่เรียกว่าการสืบทอด นี่คือเวลาที่คลาสสืบทอดคุณสมบัติของคลาสอื่น
- คลาสช่วยให้คุณแทนที่ตัวดำเนินการมาตรฐานใดๆ
- ชั้นเรียนทำให้รหัสของคุณใช้ซ้ำได้ซึ่งทำให้โปรแกรมของคุณมีประสิทธิภาพมากขึ้น
วัตถุใน Python
ออบเจ็กต์เป็นเพียงตัวอย่างของคลาสที่คุณกำหนด ทันทีที่คุณสร้างชั้นเรียน อินสแตนซ์อัตโนมัติจะถูกสร้างขึ้นแล้ว ดังนั้น เช่นเดียวกับในตัวอย่าง คลาส Cat จะยกตัวอย่างวัตถุเช่นแมวจริง - ของสายพันธุ์เปอร์เซียและอายุ 3 ขวบโดยอัตโนมัติ คุณสามารถมีแมวหลายตัวที่มีคุณสมบัติต่างกันได้ แต่เพื่อให้สมเหตุสมผล คุณจะต้องมีชั้นเรียนเป็นไกด์ของคุณ มิฉะนั้น คุณจะรู้สึกสูญเสีย โดยไม่รู้ว่าข้อมูลใดที่จำเป็น
วัตถุมีลักษณะกว้าง ๆ สามสิ่ง:
- สถานะ: หมายถึงแอตทริบิวต์ต่างๆ ของวัตถุใดๆ และคุณสมบัติต่างๆ ที่สามารถแสดงได้
- พฤติกรรม: โดยพื้นฐานแล้วหมายถึงวิธีการของวัตถุนั้น นอกจากนี้ยังสะท้อนว่าวัตถุนี้มีปฏิสัมพันธ์หรือตอบสนองต่อวัตถุอื่นอย่างไร
- ข้อมูลประจำตัว: ข้อมูลประจำตัวคือชื่อเฉพาะของวัตถุที่ใช้ซึ่งสามารถเรียกใช้ได้ตามต้องการ
1. ประกาศวัตถุ
การประกาศออบเจกต์เรียกอีกอย่างว่าการสร้างอินสแตนซ์ของคลาส เนื่องจากทันทีที่คุณกำหนดคลาส ออบเจกต์ดีฟอลต์จะถูกสร้างขึ้นในตัวมันเอง (ดังที่เราเห็นก่อนหน้านี้) ซึ่งเป็นอินสแตนซ์ของคลาสนั้น ในทำนองเดียวกัน ทุกครั้งที่คุณสร้างวัตถุ คุณกำลังสร้างอินสแตนซ์ใหม่ของชั้นเรียน
ในแง่ของสามสิ่ง (สถานะ พฤติกรรม ตัวตน) ที่เรากล่าวถึงก่อนหน้านี้ อินสแตนซ์ (วัตถุ) ทั้งหมดมีพฤติกรรมและสถานะเหมือนกัน แต่ตัวตนของพวกมันต่างกัน คลาสเดียวสามารถมีอ็อบเจ็กต์จำนวนเท่าใดก็ได้ ตามที่โปรแกรมเมอร์ต้องการ
ดูตัวอย่างด้านล่าง นี่คือโปรแกรมที่อธิบายวิธีการยกตัวอย่างคลาส
คลาสแมว:
#คลาสง่ายๆ
# คุณลักษณะ
attr1 = “แมว”
attr2 = “แมว”
#วิธีตัวอย่าง
def fun(ตัวเอง):
พิมพ์("ฉันเป็น", self.attr1)
พิมพ์("ฉันเป็น", self.attr2)
#รหัสไดรเวอร์
# การสร้างอินสแตนซ์ของวัตถุ
ทอม = แมว ()
# การเข้าถึงแอตทริบิวต์คลาส
#และวิธีผ่านวัตถุ
พิมพ์(Tom.attr1)
Tom.fun();
ผลลัพธ์ของโปรแกรมง่าย ๆ นี้จะเป็นดังนี้:
แมว
ฉันเป็นแมว
ฉันเป็นแมว
อย่างที่คุณเห็น เราได้สร้างคลาสที่เรียกว่า cat ขึ้นมาก่อน จากนั้นจึงสร้างอินสแตนซ์อ็อบเจกต์ชื่อ 'Tom' ผลลัพธ์ทั้งสามที่เราได้รับมีดังนี้:
- แมว – นี่คือผลลัพธ์ของการพิมพ์คำสั่ง (Tom.attr1) เนื่องจาก Tom เป็นอ็อบเจ็กต์ของคลาส Cat และตั้งค่า attr1 เป็น Feline ฟังก์ชันนี้จะส่งคืนเอาต์พุต Feline
- ฉันเป็นแมว – Tom.fun(); ใช้วัตถุที่เรียกว่า Tom เพื่อเรียกใช้ฟังก์ชันในคลาส cat ที่เรียกว่า 'fun' วัตถุ Tom นำคุณลักษณะของฟังก์ชันมาด้วย ดังนั้นฟังก์ชันจึงแสดงประโยคสองประโยคต่อไปนี้ - "I'm a feline"
- ฉันเป็นแมว – เหตุผลเดียวกับที่กล่าวข้างต้น
เมื่อคุณเข้าใจวิธีการทำงานของคลาสและอ็อบเจ็กต์ใน Python แล้ว มาดูวิธีการที่จำเป็นกัน
2. วิธีการด้วยตนเอง
วิธีการทั้งหมดที่กำหนดไว้ในคลาสใด ๆ จำเป็นต้องมีพารามิเตอร์แรกพิเศษในการกำหนดฟังก์ชัน พารามิเตอร์นี้ไม่ได้กำหนดค่าใด ๆ โดยโปรแกรมเมอร์ อย่างไรก็ตาม เมื่อเรียกใช้เมธอด Python จะให้ค่าแก่มัน

ดังนั้น หากคุณกำหนดฟังก์ชันที่ไม่มีอาร์กิวเมนต์ ฟังก์ชันนั้นยังมีอาร์กิวเมนต์เพียงตัวเดียวในทางเทคนิค สิ่งนี้เรียกว่า 'ตัวเอง' ใน Python เพื่อให้เข้าใจดีขึ้น คุณสามารถแก้ไขแนวคิดของพอยน์เตอร์ใน C++ หรืออ้างอิงใน Java วิธีการของตนเองทำงานในลักษณะเดียวกันเป็นหลัก
เพื่อให้เข้าใจสิ่งนี้ดีขึ้น – เมื่อเราเรียกวิธีการใด ๆ ของวัตถุเช่น:
myObject.myMethod(arg1, arg2), Python จะแปลงเป็น myClass.myMethod(myObject, arg1, arg2) โดยอัตโนมัติ
คุณคงเห็นแล้วว่า ตัวอ็อบเจกต์เองกลายเป็นอาร์กิวเมนต์แรกของเมธอด นี่คือสิ่งที่ตัวเองใน Python เป็นเรื่องเกี่ยวกับ
3. วิธี __init__
วิธีนี้คล้ายกับตัวสร้างใน Java หรือ C++ เช่นเดียวกับคอนสตรัคเตอร์ เมธอด init ใช้เพื่อเริ่มต้นสถานะของอ็อบเจ็กต์ ประกอบด้วยชุดคำสั่ง (คำสั่ง) ที่ดำเนินการในขณะที่สร้างวัตถุ เมื่ออ็อบเจ็กต์ถูกสร้างอินสแตนซ์สำหรับคลาส เมธอด init จะรันเมธอดที่คุณเริ่มต้นโดยอัตโนมัติ
นี่คือโค้ดบางส่วนที่อธิบายได้ดีขึ้น:
# คลาสตัวอย่างด้วยวิธีการเริ่มต้น บุคคลในชั้นเรียน:
# วิธีการเริ่มต้นหรือตัวสร้าง def __init__ (ตัวเอง, ชื่อ): self.name = ชื่อ
# วิธีการตัวอย่าง def say_hi (ตัวเอง): พิมพ์ ('สวัสดีฉันชื่อ' self.name)
p = คน (“แซม”) p.say_hi() |
เอาท์พุท:
สวัสดี ฉันชื่อแซม
เรียนรู้ หลักสูตรการวิเคราะห์ข้อมูล ออนไลน์จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม PG สำหรับผู้บริหาร โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว
ตัวแปรคลาสและอินสแตนซ์
ตัวแปรอินสแตนซ์จะไม่ซ้ำกันสำหรับแต่ละอินสแตนซ์ ในขณะที่ตัวแปรคลาสมีไว้สำหรับเมธอดและแอตทริบิวต์ที่แชร์โดยอินสแตนซ์ทั้งหมดของคลาส ดังนั้น ตัวแปรอินสแตนซ์โดยพื้นฐานแล้วเป็นตัวแปรที่มีค่าที่กำหนดในตัวสร้างหรือวิธีการด้วยตนเอง ในทางกลับกัน ตัวแปรคลาสคือตัวแปรที่มีค่าที่กำหนดภายในคลาส
ทำตามโค้ดต่อไปนี้เพื่อทำความเข้าใจวิธีกำหนดตัวแปรอินสแตนซ์โดยใช้ตัวสร้าง (วิธี init):
คลาสแมว:
# ตัวแปรระดับ
สัตว์ = 'แมว'
# วิธีการเริ่มต้นหรือตัวสร้าง
def __init__(ตัวเอง, สายพันธุ์, สี):
# ตัวแปรอินสแตนซ์
self.breed = สายพันธุ์
self.color = สี
# วัตถุของชั้นเรียนสุนัข
ทอม = แมว("เปอร์เซีย", "ดำ")
สโนวี่ = แมว("อินดี้", "ขาว")
พิมพ์("รายละเอียดทอม:')
พิมพ์ ('Tom is a', Tom.animal)
print('Breed: ', Tom.breed)
พิมพ์ ('สี: ', Tom.color)
print('\nรายละเอียดเต็มไปด้วยหิมะ:')
พิมพ์ (“Snowy is a', Snowy.animal)
print('Breed: ', Snowy.breed)
พิมพ์ ('สี: ', Snowy.color)
หากคุณทำตามโค้ดด้านบนทีละบรรทัด คุณจะได้รับผลลัพธ์ดังนี้:
เอาท์พุท:
รายละเอียดทอม:
ทอมเป็นแมว
สายพันธุ์: เปอร์เซีย
สีดำ
รายละเอียดเต็มไปด้วยหิมะ:
สโนวี่เป็นแมว
พันธุ์: อินดี้
สี: ขาว

สรุปแล้ว
Python เป็นภาษาการเขียนโปรแกรมที่ค่อนข้างง่ายกว่า โดยเฉพาะสำหรับผู้เริ่มต้น เมื่อคุณเข้าใจพื้นฐานแล้ว คุณก็พร้อมที่จะทำงานกับไลบรารี Python ต่างๆ และแก้ปัญหาเฉพาะข้อมูล อย่างไรก็ตาม โปรดจำไว้ว่าในขณะที่การเดินทางเริ่มต้นจากการทำความเข้าใจคลาสและวัตถุ คุณต้องเรียนรู้วิธีทำงานกับวัตถุ คลาส และความแตกต่างของวัตถุต่างๆ
เราหวังว่าบทความนี้จะช่วยชี้แจงข้อสงสัยของคุณเกี่ยวกับคลาสและอ็อบเจกต์ใน Python หากคุณมีคำถามใด ๆ โปรดแสดงความคิดเห็นด้านล่าง เราจะติดต่อกลับหาคุณในไม่ช้า!
หากคุณกำลังมองหาการเปลี่ยนอาชีพและกำลังมองหาความช่วยเหลือจากผู้เชี่ยวชาญ - upGrad อยู่ที่นี่เพื่อคุณ ตรวจสอบ โครงการ Executive PG ของเราใน Data Science ที่นำเสนอร่วมกับ IIIT-B ทำความคุ้นเคยกับภาษาและเครื่องมือการเขียนโปรแกรมมากกว่า 14 ภาษา (รวมถึง Python) ในขณะเดียวกันก็เข้าถึงโครงการที่เกี่ยวข้องกับอุตสาหกรรมมากกว่า 30 โครงการ นักเรียนจากสตรีมใดก็ได้สามารถลงทะเบียนในโปรแกรมนี้ได้โดยมีคะแนนขั้นต่ำ 50% ในระดับปริญญาตรี
เรามีฐานผู้เรียนที่แข็งแกร่งกว่า 85 ประเทศ ผู้เรียนที่จ่ายเงินกว่า 40,000 คนทั่วโลก และมืออาชีพที่ทำงานอย่างมีความสุขกว่า 500,000 คน ความช่วยเหลือด้านอาชีพแบบ 360 องศาของเรา ประกอบกับการเปิดโปงการศึกษาและการระดมสมองกับนักศึกษาทั่วโลก ช่วยให้คุณได้รับประโยชน์สูงสุดจากประสบการณ์การเรียนรู้ของคุณ
คลาสคือเทมเพลตหรือพิมพ์เขียวที่ผูกคุณสมบัติและหน้าที่ของเอนทิตี ใน Python คลาสของคีย์เวิร์ดใช้เพื่อกำหนดคลาส เอนทิตีหรืออ็อบเจ็กต์ทั้งหมดที่มีคุณลักษณะคล้ายคลึงกันสามารถจัดอยู่ภายใต้คลาสเดียวและสามารถเข้าถึงได้โดยฟังก์ชันของสมาชิก มีสี่กระบวนทัศน์ที่แยกแยะได้หลัก ๆ ตามด้วย Python- เชิงวัตถุ ขั้นตอน การทำงาน และความจำเป็น Python สนับสนุนแนวคิดเชิงวัตถุอย่างยิ่ง อย่างไรก็ตาม ไม่ใช่ภาษาโปรแกรมเชิงวัตถุล้วนๆ คล้ายกับภาษาโปรแกรมเชิงวัตถุอื่น ๆ คลาสใน Python ยังมีตัวแก้ไขการเข้าถึงสามตัว:คลาสและวัตถุใน Python คืออะไร?
วัตถุเป็นตัวอย่างของการเรียน. เมื่อสร้างชั้นเรียนแล้ว วัตถุจะได้รับข้อมูลทั้งหมดของชั้นเรียนนั้น มันเหมือนกับสำเนาของคลาสที่เคารพด้วยค่าจริง วัตถุถูกจำแนกตามปัจจัยสามประการ:
ก. สถานะ
ข. พฤติกรรม
ค. ตัวตน Python ปฏิบัติตามกระบวนทัศน์การเขียนโปรแกรมใด
เหตุผลในการสนับสนุนกระบวนทัศน์การเขียนโปรแกรมต่างๆ เป็นเพราะสคริปต์บางตัวได้รับอิทธิพลอย่างเห็นได้ชัด เช่น CoffeeScript และภาษาโปรแกรมเชิงวัตถุ เช่น Ruby นอกจากนี้ยังรวมเข้ากับภาษาเช่น R เพื่อเพิ่มประสิทธิภาพและพลังในการคำนวณ
เนื่องจากเป็นภาษาที่มีหลายกระบวนทัศน์ เชื่อกันว่า Python เป็นหนึ่งในภาษาที่หลากหลายที่สุด มีการใช้กันอย่างแพร่หลายสำหรับการพัฒนา การวิเคราะห์ข้อมูล การขูดเว็บ และระบบอัตโนมัติ ตัวแก้ไขการเข้าถึงใน Python คืออะไร
ก. ตัวแก้ไขการเข้าถึงสาธารณะ : สมาชิกคลาสที่ระบุว่าเป็นสาธารณะสามารถเข้าถึงได้โดยตรงจากฟังก์ชันใดๆ เช่น โดยฟังก์ชันของสมาชิกและฟังก์ชันที่ไม่ใช่สมาชิก หากไม่มีการระบุตัวระบุการเข้าถึง คอมไพเลอร์จะถือว่าสมาชิกคลาสทั้งหมดเป็นสมาชิกสาธารณะโดยค่าเริ่มต้น
ข. Private Access Modifier : สมาชิกของคลาสเหล่านี้ถูกซ่อนจากสมาชิกคลาสคนอื่นๆ สามารถเข้าถึงได้โดยฟังก์ชันสมาชิกของคลาสที่กำหนดไว้เท่านั้น
ค. Protected Access Modifier : สมาชิกของคลาสที่ระบุว่ามีการป้องกันสามารถเข้าถึงได้โดยฟังก์ชันสมาชิกของคลาสเดียวกันเท่านั้น และจะโยนข้อผิดพลาดหากพยายามเข้าถึงภายนอกคลาส ข้อแตกต่างที่สำคัญเพียงอย่างเดียวระหว่างตัวระบุการเข้าถึงแบบส่วนตัวและแบบมีการป้องกันคือสมาชิกที่ได้รับการป้องกันสามารถสืบทอดได้ในขณะที่สมาชิกส่วนตัวไม่สามารถสืบทอดได้