Python OOP: คลาส วัตถุ การสืบทอด และตัวสร้างพร้อมตัวอย่าง
OOP เข้าแล้ว Python
OOP เข้าแล้ว Python เป็นแนวทางการเขียนโปรแกรมที่เน้นการใช้วัตถุและคลาสเช่นเดียวกับภาษาการเขียนโปรแกรมทั่วไปอื่นๆ วัตถุอาจเป็นเอนทิตีในโลกแห่งความเป็นจริงก็ได้ Python ช่วยให้นักพัฒนาสามารถพัฒนาแอปพลิเคชันโดยใช้แนวทาง OOP โดยเน้นไปที่การนำโค้ดกลับมาใช้ใหม่ได้ มันง่ายมากที่จะสร้างคลาสและอ็อบเจ็กต์ Python.
คลาสคืออะไร?
ชั้นเรียนใน Python คือการจัดกลุ่มข้อมูลและฟังก์ชันทางตรรกะ ให้อิสระในการสร้างโครงสร้างข้อมูลที่มีเนื้อหาตามอำเภอใจและเข้าถึงได้ง่าย
ตัวอย่างเช่น สำหรับพนักงานธนาคารใดๆ ที่ต้องการดึงข้อมูลรายละเอียดลูกค้าทางออนไลน์ จะต้องไปที่ ระดับลูกค้าซึ่งจะมีการแสดงรายการคุณลักษณะทั้งหมด เช่น รายละเอียดธุรกรรม รายละเอียดการถอนและการฝาก หนี้ค้างชำระ ฯลฯ
วิธีการกำหนด 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
- อาร์กิวเมนต์ของตัวมันเองจะอ้างอิงถึงตัววัตถุเอง ดังนั้นจึงมีการใช้คำว่า 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 ไวยากรณ์การสืบทอด
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()
โปรดสังเกตว่าใน childClass วิธีที่ 1 ไม่ได้ถูกกำหนดไว้ แต่ได้มาจากพาเรนต์ myClass ผลลัพธ์คือ “Guru99”
ขั้นตอน 2) Uncomment Line # 8 & 10 เรียกใช้โค้ด
ตอนนี้ วิธีที่ 1 ถูกกำหนดไว้ใน childClass และเอาต์พุต “childClass Method1” จะแสดงอย่างถูกต้อง
ขั้นตอน 3) ไม่แสดงความคิดเห็นบรรทัดที่ 9 เรียกใช้รหัส
คุณสามารถเรียกเมธอดของคลาสพาเรนต์ได้โดยใช้ไวยากรณ์
ParentClassName.MethodName(self)
ในกรณีของเรา เราเรียก myClass.method1(self) และ Guru99 ว่าพิมพ์ตามที่คาดไว้
ขั้นตอนที่ 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
สรุป
“คลาส” คือการจัดกลุ่มฟังก์ชันและข้อมูลแบบลอจิคัล Python class มีคุณสมบัติมาตรฐานทั้งหมดของการเขียนโปรแกรมเชิงวัตถุ
- กลไกการสืบทอดคลาส
- คลาสที่ได้รับมาซึ่งแทนที่วิธีการใดๆ ของคลาสพื้นฐาน
- เมธอดสามารถเรียกเมธอดของคลาสพื้นฐานที่มีชื่อเดียวกันได้
- Python คลาสถูกกำหนดโดยคำหลัก “class†ตัวเอง
- ภายในคลาส คุณสามารถกำหนดฟังก์ชันหรือเมธอดที่เป็นส่วนหนึ่งของคลาสได้
- ทุกอย่างในคลาสจะถูกเยื้อง เช่นเดียวกับโค้ดในฟังก์ชัน ลูป คำสั่ง if ฯลฯ
- การโต้แย้งตนเองใน Python หมายถึงวัตถุนั้นเอง Self เป็นชื่อที่ต้องการตามแบบแผนของ Pythons เพื่อระบุพารามิเตอร์แรกของวิธีการเช่นใน Python
-
Python รันไทม์จะส่งผ่านค่า “ตนเอง” โดยอัตโนมัติเมื่อคุณเรียกใช้เมธอดอินสแตนซ์ในอินสแตนซ์ ไม่ว่าคุณจะตั้งใจระบุหรือไม่ก็ตาม
- In Pythonคลาสสามารถสืบทอดคุณลักษณะและวิธีการพฤติกรรมจากคลาสอื่นที่เรียกว่าคลาสย่อยหรือคลาสทายาท