Python คลาสและวัตถุ [พร้อมตัวอย่าง]

เผยแพร่แล้ว: 2021-06-25

OOP – ย่อมาจาก 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 สนับสนุนแนวคิดเชิงวัตถุอย่างยิ่ง อย่างไรก็ตาม ไม่ใช่ภาษาโปรแกรมเชิงวัตถุล้วนๆ
เหตุผลในการสนับสนุนกระบวนทัศน์การเขียนโปรแกรมต่างๆ เป็นเพราะสคริปต์บางตัวได้รับอิทธิพลอย่างเห็นได้ชัด เช่น CoffeeScript และภาษาโปรแกรมเชิงวัตถุ เช่น Ruby นอกจากนี้ยังรวมเข้ากับภาษาเช่น R เพื่อเพิ่มประสิทธิภาพและพลังในการคำนวณ
เนื่องจากเป็นภาษาที่มีหลายกระบวนทัศน์ เชื่อกันว่า Python เป็นหนึ่งในภาษาที่หลากหลายที่สุด มีการใช้กันอย่างแพร่หลายสำหรับการพัฒนา การวิเคราะห์ข้อมูล การขูดเว็บ และระบบอัตโนมัติ

ตัวแก้ไขการเข้าถึงใน Python คืออะไร

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