Python类的继承与多态详细介绍

月亮慢半拍
月亮慢半拍
发布时间:2026-10-15| 3人浏览过
原创

本文详细介绍Python中类的创建、继承机制及多态的应用。涵盖类变量、构造方法__init__、self关键字的作用,以及通过父类引用调用不同子类方法实现多态的具体代码示例,帮助开发者理解面向对象编程的核心概念。

概念

类(Class)是用于描述具有相同属性和方法对象的集合。

类变量在实例化的所有对象中共享,定义在类中且位于函数体之外,通常不作为实例变量使用。

类包含一个名为 __init__() 的特殊方法(构造方法),在类实例化时自动调用。

self 代表类的实例,指向当前对象的内存地址,而 self.class 指向类本身。

通过类名直接调用类变量,例如 Car.weight。

实例化对象,例如 car01=Car(5)。

通过实例对象调用属性,例如 car01.weght。

类的创建

#创建小汽车类和客车类
class Car(object):
    def __init__(self,weight):    #实例化对象时传入特有属性
        self.weight=weight
        print("小汽车")
        print(weight,"t")          #定义类内方法,功能是打印出实例化的小汽车的重量
    def func(self):
        print("小汽车的驾驶方法")
class Passenger_car(object):
    def __init__(self,weight):
        self.weight=weight
        print("客车")
        print(weight,"t")
    def func(self):
        print("客车的驾驶方法")       

类的继承

在Python 3中,构造类时默认继承 object 基类。object 可视为空类,括号中显式写出 object 是Python 3的特性;而在Python 2中,若不写 object 则不会默认继承该基类。

若希望继承自定义的父类,只需将 object 替换为自定义类名。子类拥有父类所有公有属性和方法,但可通过在变量名前加下划线将其变为私有,从而禁止子类访问父类成员。

class Bus028(Passenger_car):
    def __init__(self,weight): #对基类方法的重写
        self.weight=weight
        print("28路公交车")
        print(weight,"t")
    def func(self):           #对基类方法的重写 
        print("28路公交车的驾驶方法")
    #子类在父类中继承过来了func方法,但是在父类中修改了原来方法的内容

多态的使用

以下三个公交车类的父类均为客车类。可以编写一个 funcs 方法,每次调用时传入不同对象以执行对应的 func 方法,具体实现如下:

class Bus028(Passenger_car):
    def __init__(self,weight):
        self.weight=weight
        print("28路公交车")
        print(weight,"t")
    def func(self):
        print("28路公交车的驾驶方法")
class Bus906(Passenger_car):
    def __init__(self,weight):
        self.weight=weight
        print("906路公交车")
        print(weight,"t")
    def func(self):
        print("906路公交车的驾驶方法")
class BusB32(Passenger_car):
    def __init__(self,weight):
        self.weight=weight
        print("B32路公交车")
        print(weight,"t")
    def func(self):
        print("B32路公交车的驾驶方法")
def funcs(obj):        #此处obj表示传入一个实例化对象
    obj.func()

主函数:

from demo01 import *
def main():
    car01=Car(5)    #例化为带有重量为5t的一个具体对象
    car01.func()
    passenger_car01=Passenger_car(20)    #例化为带有重量为20t的一个具体对象
    passenger_car01.func()
    bus028_01=Bus028(15)        #例化为带有重量为15t的一个具体对象
    bus906_01=Bus906(15)        #例化为带有重量为15t的一个具体对象
    busB32_01=BusB32(15)        #例化为带有重量为15t的一个具体对象
    funcs(bus028_01)            #调用funcs方法
    funcs(bus906_01)
    funcs(busB32_01)
 
if __name__=="__main__":
    main()

可以看到,小汽车被实例化为重量为5t的具体对象,客车被实例化为重量为20t的具体对象,三个公交车均被实例化为重量为15t的具体对象。

如上图所示,每次调用 funcs 方法时都传入一个实例化对象,funcs 根据传入的对象执行相应的内部方法。

注:(我习惯上将方法读作函数,在以后的文章中,方法一律被函数代替)

到此这篇关于Python类的继承与多态详细介绍的文章就介绍到这了,更多相关Python继承与多态内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。