0Pricing
Python Academy · บทเรียน

การสืบทอดแบบเดี่ยว

สร้างคลาสลูกที่สืบทอดแอตทริบิวต์และเมธอดจากคลาสแม่

การสืบทอดแบบเดี่ยว เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

บทนำ

การสืบทอดทำให้คลาสลูกนำพฤติกรรมของคลาสแม่กลับมาใช้และต่อยอดได้ โดยไม่ต้องทำซ้ำโค้ด

การกำหนดคลาสลูก

class Dog(Animal): สืบทอดทุกอย่างจาก Animal คลาสลูกสามารถเพิ่มเมธอดใหม่หรือเขียนทับเมธอดเดิมได้
class Animal:
    def __init__(self, name): self.name = name
    def speak(self): return '...'
class Dog(Animal):
    def speak(self): return 'Woof'
d = Dog('Rex')
print(d.name, d.speak())

การเรียกใช้ super().__init__

super().__init__(args) เรียกใช้ __init__ ของคลาสแม่ ควรเรียกใช้ในคลาสลูกเสมอเมื่อคลาสแม่มีตรรกะสำหรับการตั้งค่า
class Animal:
    def __init__(self, name): self.name = name
class Dog(Animal):
    def __init__(self, name, breed):
        super().__init__(name)
        self.breed = breed
d = Dog('Rex', 'Labrador')
print(d.name, d.breed)

การสืบทอดเมธอด

คลาสลูกสืบทอดเมธอดทั้งหมดของคลาสแม่ หากไม่เขียนทับ เมธอดเหล่านั้นจะทำงานเหมือนเดิม
class Vehicle:
    def start(self): return 'starting'
class Car(Vehicle):
    pass
print(Car().start())

การเขียนทับเมธอด

กำหนดเมธอดที่มีชื่อเดียวกันในคลาสลูกเพื่อแทนที่เมธอดของคลาสแม่ ระบบจะเรียกใช้เมธอดของคลาสลูก
class Shape:
    def area(self): return 0
class Square(Shape):
    def __init__(self, s): self.s = s
    def area(self): return self.s**2
print(Square(4).area())

การต่อยอดพฤติกรรมของคลาสแม่

เรียกใช้ super().method() ภายในเมธอดที่เขียนทับ เพื่อให้เมธอดของคลาสแม่ทำงานก่อน แล้วจึงเพิ่มการทำงานเพิ่มเติม
class Animal:
    def describe(self): return 'I am an animal'
class Dog(Animal):
    def describe(self): return super().describe() + ' and a dog'
print(Dog().describe())

isinstance() และ issubclass()

isinstance(obj, Parent) จะคืนค่า True สำหรับอินสแตนซ์ของคลาสลูกด้วย ส่วน issubclass(Child, Parent) ใช้ตรวจสอบลำดับชั้นของคลาส
class Animal: pass
class Dog(Animal): pass
d = Dog()
print(isinstance(d, Animal))
print(issubclass(Dog, Animal))

คลาสลูกเพิ่มเมธอดใหม่

คลาสลูกสามารถกำหนดเมธอดใหม่ทั้งหมดที่คลาสแม่ไม่มีได้
class Animal:
    def __init__(self, name): self.name = name
class Dog(Animal):
    def fetch(self): return f'{self.name} fetches!'
print(Dog('Rex').fetch())

แอตทริบิวต์ที่ป้องกันการเข้าถึง

ธรรมเนียมการเติม _name สื่อว่า “อย่าเข้าถึงจากภายนอกคลาส” คลาสย่อย CAN ใช้แอตทริบิวต์เหล่านี้ได้
class Animal:
    def __init__(self, name): self._name = name
    def name(self): return self._name
class Dog(Animal):
    def bark(self): return f'{self._name} barks'
print(Dog('Rex').bark())

คลาสฐานนามธรรม

from abc import ABC, abstractmethod บังคับให้คลาสย่อยต้องนำเมธอดไปใช้งาน
from abc import ABC, abstractmethod
class Shape(ABC):
    @abstractmethod
    def area(self): pass
class Circle(Shape):
    def __init__(self, r): self.r = r
    def area(self):
        import math
        return math.pi * self.r**2
print(Circle(3).area())

__bases__ และ __mro__

Dog.__bases__ แสดงคลาสแม่โดยตรง ส่วน Dog.__mro__ แสดงลำดับการค้นหาเมธอดทั้งหมด
class A: pass
class B(A): pass
class C(B): pass
print(C.__mro__)

ตรวจสอบอย่างรวดเร็ว

super().__init__() ทำหน้าที่อะไรในคลาสลูก

ทบทวน

การสืบทอด: class Child(Parent) super() ใช้เข้าถึงคลาสแม่ เขียนทับเมธอดเพื่อเปลี่ยนพฤติกรรม isinstance() ใช้ตรวจสอบลำดับชั้น และ ABC บังคับใช้ข้อกำหนดเชิงนามธรรม

เรียนต่อไป

ก้าวหน้าได้ยอดเยี่ยมมาก! เรียนต่อไปเพื่อทำความเข้าใจแนวคิดถัดไปอย่างเชี่ยวชาญ

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

บทเรียน “การสืบทอดแบบเดี่ยว” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การสืบทอดแบบเดี่ยว” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การสืบทอดแบบเดี่ยว”

สร้างคลาสลูกที่สืบทอดแอตทริบิวต์และเมธอดจากคลาสแม่ คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การสืบทอดแบบเดี่ยว” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม

ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การสืบทอดแบบเดี่ยว
  2. การเขียนทับเมธอดและ super()
  3. การสืบทอดหลายแบบและ MRO
  4. พหุรูปและการพิมพ์แบบดักไทป์
← กลับไปที่ Python Academy