การสืบทอดคลาส

Python เบื้องต้นสำหรับการเขียนโปรแกรมเชิงวัตถุ

George Boorman

Curriculum Manager, DataCamp

การนำโค้ดกลับมาใช้ใหม่

 

1. มีคนทำไว้ให้แล้ว

 

  • แพ็กเกจเหมาะสำหรับฟังก์ชันที่ตายตัว
  • OOP เหมาะสำหรับการปรับแต่งฟังก์ชัน

โลโก้ของแพ็กเกจ Python หลายตัว

Python เบื้องต้นสำหรับการเขียนโปรแกรมเชิงวัตถุ

การนำโค้ดกลับมาใช้ใหม่

 

1. มีคนทำไว้ให้แล้ว

 

2. DRY: Don't Repeat Yourself

องค์ประกอบ GUI ต่าง ๆ

Python เบื้องต้นสำหรับการเขียนโปรแกรมเชิงวัตถุ

การนำโค้ดกลับมาใช้ใหม่

 

1. มีคนทำไว้ให้แล้ว

 

2. DRY: Don't Repeat Yourself

อย่าใช้องค์ประกอบ GUI ซ้ำซ้อน

Python เบื้องต้นสำหรับการเขียนโปรแกรมเชิงวัตถุ

การสืบทอด

 

$$\Large{\text{New class functionality = Old class functionality + extra}}$$

Python เบื้องต้นสำหรับการเขียนโปรแกรมเชิงวัตถุ

ตัวอย่างลำดับชั้น

คลาส BankAccount

Python เบื้องต้นสำหรับการเขียนโปรแกรมเชิงวัตถุ

ตัวอย่างลำดับชั้น

SavingsAccount สืบทอดจาก BankAccount

Python เบื้องต้นสำหรับการเขียนโปรแกรมเชิงวัตถุ

ตัวอย่างลำดับชั้น

CheckingAccount สืบทอดจาก BankAccount เช่นกัน

Python เบื้องต้นสำหรับการเขียนโปรแกรมเชิงวัตถุ

ตัวอย่างลำดับชั้น

CheckingAccount มีเมธอด withdraw ที่ถูกแก้ไข

Python เบื้องต้นสำหรับการเขียนโปรแกรมเชิงวัตถุ

การสร้างการสืบทอดคลาส

class BankAccount:
    def __init__(self, balance):
       self.balance = balance

    def withdraw(self, amount):
        self.balance -= amount


# Class inheriting from BankAccount class SavingsAccount(BankAccount): pass
  • BankAccount: คลาสแม่ที่ฟังก์ชันถูกขยาย/สืบทอดต่อ
  • SavingsAccount: คลาสลูก/คลาสย่อยที่สืบทอดฟังก์ชันและเพิ่มความสามารถใหม่
Python เบื้องต้นสำหรับการเขียนโปรแกรมเชิงวัตถุ

คลาสลูกมีข้อมูลทั้งหมดของคลาสแม่

# Constructor inherited from BankAccount
savings_acct = SavingsAccount(1000)
type(savings_acct)
__main__.SavingsAccount
# Attribute inherited from BankAccount
savings_acct.balance
1000
# Method inherited from BankAccount
savings_acct.withdraw(300)
Python เบื้องต้นสำหรับการเขียนโปรแกรมเชิงวัตถุ

การสืบทอด: ความสัมพันธ์แบบ "is-a"

SavingsAccount คือ BankAccount

(อาจมีฟีเจอร์พิเศษเพิ่มเติม)

savings_acct = SavingsAccount(1000)
isinstance(savings_acct, SavingsAccount)
True
isinstance(savings_acct, BankAccount)
True

 

 

acct = BankAccount(500)
isinstance(acct, SavingsAccount)
False
isinstance(acct, BankAccount)
True
Python เบื้องต้นสำหรับการเขียนโปรแกรมเชิงวัตถุ

มาฝึกกันเถอะ!

Python เบื้องต้นสำหรับการเขียนโปรแกรมเชิงวัตถุ

Preparing Video For Download...