Python OOPs: คลาส, อ็อบเจ็กต์, การสืบทอด และคอนสตรัคเตอร์

⚡ สรุปอย่างชาญฉลาด

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

  • 🔘 แผนผังชั้นเรียน: คลาสจะจัดกลุ่มข้อมูลและเมธอดที่เกี่ยวข้องเข้าด้วยกันเป็นแบบแผนที่สามารถนำกลับมาใช้ใหม่ได้สำหรับการสร้างอ็อบเจ็กต์
  • ☑️ วัตถุ: อ็อบเจ็กต์คืออินสแตนซ์ของคลาส โดยแต่ละอินสแตนซ์จะเก็บค่าแอตทริบิวต์ของตนเองไว้
  • การกำหนดคลาส: คีย์เวิร์ด class, เมธอดที่มีการเยื้อง และพารามิเตอร์ self กำหนด Python ชั้นเรียน
  • 🧬 มรดก: คลาสที่สืบทอดมาจะรับคุณสมบัติและเมธอดจากคลาสพื้นฐาน และรองรับการสืบทอดแบบหลายทาง
  • 🛠️ ตัวสร้าง: เมธอด __init__() จะกำหนดค่าเริ่มต้นให้กับอ็อบเจ็กต์ใหม่แต่ละตัวด้วยค่าที่กำหนดไว้ล่วงหน้า
  • 🤖 ความเกี่ยวข้องของ AI: ไลบรารีการเรียนรู้ของเครื่อง เช่น PyTorแบบจำลอง ch ชั้นและเครือข่าย Python ชั้นเรียน

Python OOPs: คลาส, อ็อบเจ็กต์, การสืบทอด และคอนสตรัคเตอร์

OOP เข้าแล้ว Python

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

คลาสคืออะไร?

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

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

วิธีการกำหนด Python ชั้นเรียน

ในการกำหนดคลาส คุณต้องพิจารณาประเด็นต่อไปนี้

ขั้นตอน 1) In Python, คลาสถูกกำหนดโดย "ระดับ" คีย์เวิร์ด

class myClass():

ขั้นตอน 2) ภายในคลาส คุณสามารถกำหนดฟังก์ชันหรือเมธอดที่เป็นส่วนหนึ่งของคลาสนี้ได้

def method1 (self):
   print "Guru99"
def method2 (self,someString): 
   print "Software Testing:" + someString
  • ในที่นี้เราได้กำหนดเมธอด 1 ที่พิมพ์ “Guru99.”
  • อีกวิธีหนึ่งที่เรากำหนดไว้คือวิธีที่ 2 ที่พิมพ์ "การทดสอบซอฟต์แวร์" + SomeString SomeString เป็นตัวแปรที่จัดทำโดยวิธีการโทร

ขั้นตอน 3) ทุกอย่างในคลาสมีการเยื้อง เช่นเดียวกับโค้ดในฟังก์ชัน ลูป คำสั่ง if ฯลฯ อะไรก็ตามที่ไม่มีการเยื้องจะไม่อยู่ในคลาส

กำหนด Python ชั้นเรียน

หมายเหตุ: เกี่ยวกับการใช้ “ตัวตน” เข้ามา Python

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

ขั้นตอน 4) เพื่อสร้างวัตถุของชั้นเรียน

c = myClass()

ขั้นตอน 5) เพื่อเรียกเมธอดในคลาส

c.method1()
    c.method2(" Testing is fun")
  • โปรดสังเกตว่าเมื่อเราเรียกใช้เมธอด method1 หรือ method2 เราไม่จำเป็นต้องระบุคีย์เวิร์ดของตัวเอง ระบบจะจัดการให้โดยอัตโนมัติ Python รันไทม์
  • Python รันไทม์จะส่งผ่านค่า “ตัวเอง” เมื่อคุณเรียกใช้เมธอดอินสแตนซ์ ไม่ว่าคุณจะตั้งใจระบุหรือไม่ก็ตาม
  • คุณเพียงแค่ต้องใส่ใจกับการโต้แย้งที่ไม่ใช่ตัวเอง

ขั้นตอน 6) นี่คือรหัสที่สมบูรณ์

# Example file for working with classes
class myClass():
  def method1(self):
      print("Guru99")
        
  def method2(self,someString):    
      print("Software Testing:" + someString)
  
      
def main():           
  # exercise the class methods
  c = myClass ()
  c.method1()
  c.method2(" Testing is fun")
  
if __name__== "__main__":
  main()

มรดกทำงานอย่างไร

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

การสืบทอดทางพันธุกรรมทำงานอย่างไรใน Python

Python ไวยากรณ์การสืบทอด

class DerivedClass(BaseClass):
    body_of_derived_class

ขั้นตอน 1) รันโค้ดต่อไปนี้

# Example file for working with classes
class myClass():
  def method1(self):
      print("Guru99")
        
  
class childClass(myClass):
  #def method1(self):
        #myClass.method1(self);
        #print ("childClass Method1")
        
  def method2(self):
        print("childClass method2")     
         
def main():           
  # exercise the class methods
  c2 = childClass()
  c2.method1()
  #c2.method2()

if __name__== "__main__":
  main()

โปรดสังเกตว่าในคลาสลูก เมธอด 1 ไม่ได้ถูกนิยามไว้ แต่สืบทอดมาจากคลาสแม่ myClass ผลลัพธ์ที่ได้คือ “Guru99.”

ขั้นตอน 2) Uncomment Line # 8 & 10 เรียกใช้โค้ด

ตอนนี้ วิธีที่ 1 ถูกกำหนดไว้ใน childClass และเอาต์พุต “childClass Method1” จะแสดงอย่างถูกต้อง

ขั้นตอน 3) ไม่แสดงความคิดเห็นบรรทัดที่ 9 เรียกใช้รหัส

คุณสามารถเรียกเมธอดของคลาสพาเรนต์ได้โดยใช้ไวยากรณ์

ParentClassName.MethodName(self)

ในกรณีของเรา เราเรียก myClass.method1(self) และ Guruเลข 99 พิมพ์ออกมาได้ตามที่คาดไว้

ขั้นตอนที่ 4) ไม่มีข้อคิดเห็น บรรทัดที่ 19 เรียกใช้รหัส

วิธีที่ 2 ของคลาสลูกถูกเรียกและ "childClass method2" ถูกพิมพ์ตามที่คาดไว้

Python ตัวสร้าง

Constructor คือฟังก์ชันคลาสที่สร้างอินสแตนซ์ของวัตถุให้เป็นค่าที่กำหนดไว้ล่วงหน้า

เริ่มต้นด้วยเครื่องหมายขีดล่างสองตัว (_) และเมธอด __init__()

ในตัวอย่างด้านล่าง เรากำลังตั้งชื่อของผู้ใช้โดยใช้ตัวสร้าง

class User:
    name = ""

    def __init__(self, name):
        self.name = name

    def sayHello(self):
        print("Welcome to Guru99, " + self.name)

User1 = User("Alex")
User1.sayHello()

ผลลัพธ์จะเป็น:

ยินดีต้อนรับเข้าสู่ Guru99, อเล็กซ์

Python 2 ตัวอย่าง

รหัสข้างต้นคือ Python 3 ตัวอย่าง หากคุณต้องการรันอิน Python 2 โปรดพิจารณาโค้ดต่อไปนี้

# How to define Python classes
# Example file for working with classes
class myClass():
  def method1(self):
      print "Guru99"
        
  def method2(self,someString):    
      print "Software Testing:" + someString
      
   
      
def main():           
  # exercise the class methods
  c = myClass ()
  c.method1()
  c.method2(" Testing is fun")
  
if __name__== "__main__":
  main()


#How Inheritance works
# Example file for working with classes
class myClass():
  def method1(self):
      print "Guru99"
        
      
class childClass(myClass):
  #def method1(self):
        #myClass.method1(self);
        #print "childClass Method1" 
        
  def method2(self):
        print "childClass method2"     
         
def main():           
  # exercise the class methods
  c2 = childClass()
  c2.method1()
  #c2.method2()

if __name__== "__main__":
  main()

เรียนรู้บทช่วยสอนถัดไปของเราเกี่ยวกับ ความแตกต่างใน Python

คำถามที่พบบ่อย

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

Python การเขียนโปรแกรมเชิงวัตถุตั้งอยู่บนหลักการสี่ประการ ได้แก่ การห่อหุ้ม (การรวมข้อมูลเข้ากับเมธอด) การผกผันtracการซ่อนความซับซ้อน (การปกปิดความซับซ้อน), การสืบทอด (การนำคลาสพื้นฐานมาใช้ซ้ำ) และพหุรูป (อินเทอร์เฟซเดียว หลายรูปแบบ)

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

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

การห่อหุ้มข้อมูล (Encapsulation) จำกัดการเข้าถึงข้อมูลภายในของวัตถุโดยตรง Pythonใส่เครื่องหมายขีดล่างเดี่ยว (_name) นำหน้าแอตทริบิวต์สำหรับการป้องกัน หรือเครื่องหมายขีดล่างคู่ (__name) สำหรับการแปลงชื่อ

ใช่. ก Python คลาสสามารถสืบทอดจากคลาสแม่ได้หลายคลาส เช่น คลาส Child(A, B) Python แก้ไขปัญหาชื่อเมธอดที่ซ้ำกันโดยใช้ Method Resolution Order (MRO) ซึ่งตรวจสอบได้ด้วยเมธอด mro()

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

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

สรุปโพสต์นี้ด้วย: