Python การใช้งาน Inheritance

Inheritance (การสืบทอดคลาส) ใน Python เป็นหนึ่งในหลักการของ OOP (Object-Oriented Programming) ซึ่งทำให้เราสามารถสร้างคลาสใหม่ที่ใช้คุณสมบัติของคลาสที่มีอยู่แล้วได้ โดยไม่จำเป็นต้องเขียนโค้ดใหม่ทั้งหมด รูปแบบการใช้งานของ Inheritance สามารถแบ่งออกเป็นหลายรูปแบบตามโครงสร้างการสืบทอดของคลาส ซึ่งประกอบด้วย

Single Inheritance (การสืบทอดแบบเดี่ยว)

เป็นการสืบทอดจากคลาสแม่เพียงคลาสเดียว

Python
# คลาสแม่
class Animal:
    def speak(self):
        return "Animal speaks"

# คลาสลูก
class Dog(Animal):
    def speak(self):
        return "Dog barks"

# สร้างอ็อบเจกต์ของคลาสลูก
dog = Dog()
print(dog.speak())  # Output: Dog barks

Multiple Inheritance (การสืบทอดจากหลายคลาส)

เป็นการสืบทอดจากคลาสแม่มากกว่าหนึ่งคลาส คลาสลูกจะสามารถเข้าถึงคุณสมบัติของคลาสแม่ทั้งหมดได้

Python
class Animal:
    def speak(self):
        return "Animal speaks"

class Canine:
    def run(self):
        return "Canine runs fast"

class Dog(Animal, Canine):
    pass

dog = Dog()
print(dog.speak())  # Output: Animal speaks
print(dog.run())    # Output: Canine runs fast

Multilevel Inheritance (การสืบทอดหลายระดับ)

คลาสลูกสามารถสืบทอดคุณสมบัติจากคลาสแม่ ซึ่งตัวคลาสแม่นั้นอาจเป็นลูกของคลาสอื่นอีกขั้นหนึ่ง

Python
class Animal:
    def speak(self):
        return "Animal speaks"

class Dog(Animal):
    def speak(self):
        return "Dog barks"

class Puppy(Dog):
    def speak(self):
        return "Puppy barks softly"

puppy = Puppy()
print(puppy.speak())  # Output: Puppy barks softly

Hierarchical Inheritance (การสืบทอดแบบลำดับชั้น)

คลาสแม่หนึ่งคลาสสามารถถูกสืบทอดโดยหลายคลาสลูกได้

Python
class Animal:
    def speak(self):
        return "Animal speaks"

class Dog(Animal):
    def speak(self):
        return "Dog barks"

class Cat(Animal):
    def speak(self):
        return "Cat meows"

dog = Dog()
cat = Cat()
print(dog.speak())  # Output: Dog barks
print(cat.speak())  # Output: Cat meows

Hybrid Inheritance (การสืบทอดแบบผสม)

เป็นการผสมระหว่างรูปแบบการสืบทอดต่างๆ อาจเป็นการรวมกันของการสืบทอดแบบหลายคลาสและหลายระดับ ตัวอย่างเช่น

Python
class Animal:
    def speak(self):
        return "Animal speaks"

class Canine(Animal):
    def run(self):
        return "Canine runs fast"

class Dog(Canine):
    def speak(self):
        return "Dog barks"

class Labrador(Dog):
    def color(self):
        return "Labrador is yellow"

labrador = Labrador()
print(labrador.speak())  # Output: Dog barks
print(labrador.run())    # Output: Canine runs fast
print(labrador.color())  # Output: Labrador is yellow

การใช้ super()

ในบางครั้ง เราต้องการใช้ฟังก์ชันของคลาสแม่ในคลาสลูก สามารถทำได้โดยใช้คำสั่ง super() ซึ่งช่วยเรียกใช้ฟังก์ชันจากคลาสแม่ได้โดยตรง

Python
class Animal:
    def speak(self):
        return "Animal speaks"

class Dog(Animal):
    def speak(self):
        original_speak = super().speak()  # เรียกใช้ฟังก์ชัน speak จากคลาสแม่
        return f"{original_speak} and Dog barks"

dog = Dog()
print(dog.speak())  # Output: Animal speaks and Dog barks

ข้อดีของ Inheritance

  1. การนำกลับมาใช้ใหม่: ลดความซ้ำซ้อนของโค้ด โดยสามารถใช้โค้ดจากคลาสแม่ได้
  2. ความสามารถในการขยาย: คลาสลูกสามารถเพิ่มฟังก์ชันใหม่หรือปรับแต่งฟังก์ชันของคลาสแม่ได้
  3. ความยืดหยุ่น: สามารถจัดการคลาสต่างๆ ตามโครงสร้างที่ต้องการได้

การใช้ Inheritance เป็นเครื่องมือที่ทรงพลังในการเขียนโปรแกรมแบบ OOP ช่วยให้โค้ดมีโครงสร้างที่ชัดเจน ยืดหยุ่น และสามารถนำกลับมาใช้ใหม่ได้ง่าย

แชร์เรื่องนี้