类继承

Python 面向对象编程入门

George Boorman

Curriculum Manager, DataCamp

代码复用

 

1. 别人已实现

 

  • 包适合固定功能
  • 面向对象适合自定义功能

多个 Python 包的徽标

Python 面向对象编程入门

代码复用

 

1. 别人已实现

 

2. DRY:不要重复自己(Don't Repeat Yourself)

各种图形界面元素

Python 面向对象编程入门

代码复用

 

1. 别人已实现

 

2. DRY:不要重复自己(Don't Repeat Yourself)

不要使用各种图形界面元素

Python 面向对象编程入门

继承

 

$$\Large{\text{新类功能 = 旧类功能 + 额外功能}}$$

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


# 继承自 BankAccount 的类 class SavingsAccount(BankAccount): pass
  • BankAccount:被扩展/继承功能的父类
  • SavingsAccount:继承并可扩展功能的子类
Python 面向对象编程入门

子类拥有父类的全部数据

# 构造函数从 BankAccount 继承
savings_acct = SavingsAccount(1000)
type(savings_acct)
__main__.SavingsAccount
# 属性从 BankAccount 继承
savings_acct.balance
1000
# 方法从 BankAccount 继承
savings_acct.withdraw(300)
Python 面向对象编程入门

继承:"是一个"关系

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 面向对象编程入门

Passons à la pratique !

Python 面向对象编程入门

Preparing Video For Download...