Python 教程

浏览4602
更新时间2025-08-06

函数多态

一个可用于不同对象的 Python 函数的例子是 len() 函数。

字符串

对于字符串,len() 返回字符数:

实例

x = "Hello World!"

print(len(x))
运行实例 »

点击 "运行实例" 按钮查看在线实例

元组

对于元组,len() 返回元组中的项目数:

实例

mytuple = ("apple", "banana", "cherry")

print(len(mytuple))
运行实例 »

点击 "运行实例" 按钮查看在线实例

字典

对于字典,len() 返回字典中的键值对数量:

实例

thisdict = {
  "brand": "Ford",
  "model": "Mustang",
  "year": 1964
}

print(len(thisdict))
运行实例 »

点击 "运行实例" 按钮查看在线实例

类多态

多态经常在类方法中使用,我们可以在其中有多个具有相同方法名的类。

例如,假设我们有三个类:CarBoatPlane,并且它们都有一个名为 move() 的方法:

实例

有相同方法的不同类:

class Car:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

  def move(self):
    print("Drive!")

class Boat:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

  def move(self):
    print("Sail!")

class Plane:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

  def move(self):
    print("Fly!")

car1 = Car("Ford", "Mustang")       #Create a Car class
boat1 = Boat("Ibiza", "Touring 20") #Create a Boat class
plane1 = Plane("Boeing", "747")     #Create a Plane class

for x in (car1, boat1, plane1):
  x.move()
运行实例 »

点击 "运行实例" 按钮查看在线实例

请看最后的 for 循环。由于多态性,我们可以为所有这三个类执行相同的方法。

继承类多态

那么具有相同名称的子类的类呢?我们可以在那里使用多态吗?

可以。如果我们使用上面的例子并创建一个名为 Vehicle 的父类,并使 CarBoatPlane 成为 Vehicle 的子类,则子类将继承 Vehicle 的方法,但可以覆盖它们:

实例

创建一个名为 Vehicle 的类,并使 CarBoatPlane 成为 Vehicle 的子类:

class Vehicle:
  def __init__(self, brand, model):
    self.brand = brand
    self.model = model

  def move(self):
    print("Move!")

class Car(Vehicle):
  pass

class Boat(Vehicle):
  def move(self):
    print("Sail!")

class Plane(Vehicle):
  def move(self):
    print("Fly!")

car1 = Car("Ford", "Mustang") # 创建 Car 对象
boat1 = Boat("Ibiza", "Touring 20") # 创建 Boat 对象
plane1 = Plane("Boeing", "747") # 创建 Plane 对象

for x in (car1, boat1, plane1):
  print(x.brand)
  print(x.model)
  x.move()
运行实例 »

点击 "运行实例" 按钮查看在线实例

子类从父类继承属性和方法。

在上面的例子中,您可以看到 Car 类是空的,但它从 Vehicle 继承了 brandmodelmove()

BoatPlane 类也从 Vehicle 继承了 brandmodelmove(),但它们都覆盖了 move() 方法。

由于多态性,我们可以为所有类执行相同的方法。

相关视频

更多

免费

php8,我来也
初级php8,我来也

33.5万次学习

收藏

免费

Thinkphp6.0正式版视频教程
中级Thinkphp6.0正式版视频教程

39.2万次学习

收藏

免费

细说PHP第一季
中级细说PHP第一季

30.3万次学习

收藏

精品课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

64.4万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

40.9万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

76万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

63.7万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

24.1万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

35.8万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

131.8万人学习

热门下载

更多
phpStudy 2018最新版
phpStudy 2018最新版

集成PHP7,16种组合,超全大合集

下载

VC9 32位
VC9 32位

VC9 32位 phpstudy集成安装环境运行库

下载

VC11 32位
VC11 32位

VC11 32位 phpstudy集成安装环境运行库​

下载

php程序员工具箱完整版
php程序员工具箱完整版

程序员工具箱 v1.0 php集成环境

下载

VC14 32位
VC14 32位

VC14 32位 phpstudy安装环境运行库

下载

SublimeText3汉化版
SublimeText3汉化版

中文版,非常好用

下载

Notepad++ Windows版
Notepad++ Windows版

Notepad++ 8.9.7 Windows版官方安装包,适合 Windows 用户进行代码编辑、文本处理、语法高亮和插件扩展配置。

下载