当前位置:首页 > 科技  > 软件

一文学会Python面向对象中封装、继承、多态使用

来源: 责编: 时间:2023-11-01 17:05:58 464观看
导读在Python这门强大而灵活的编程语言中,面向对象编程(OOP)是一个核心的概念,它主要包括三个基本的特性:封装、继承和多态。接下来,我将通过实际的代码示例和详细的解释,带你深入了解这三个概念,并掌握如何在Python中运用它们。

在Python这门强大而灵活的编程语言中,面向对象编程(OOP)是一个核心的概念,它主要包括三个基本的特性:封装、继承和多态。接下来,我将通过实际的代码示例和详细的解释,带你深入了解这三个概念,并掌握如何在Python中运用它们。DyJ28资讯网——每日最新资讯28at.com

DyJ28资讯网——每日最新资讯28at.com

一、封装(Encapsulation)

封装是面向对象编程的一种方法,它将对象的状态和行为组合在一起,并隐藏了对象内部实现的细节,只暴露出有限的接口供外部访问。DyJ28资讯网——每日最新资讯28at.com

代码示例:DyJ28资讯网——每日最新资讯28at.com

class Car:    def __init__(self, speed, color):        self.__speed = speed  # 私有属性,用两个下划线开头        self.color = color    def set_speed(self, speed):        if speed < 0:            print("速度不能为负数")        else:            self.__speed = speed    def get_speed(self):        return self.__speedcar = Car(60, "红色")print(car.color)  # 输出:红色print(car.get_speed())  # 输出:60car.set_speed(-10)  # 输出:速度不能为负数car.set_speed(80)print(car.get_speed())  # 输出:80

在上面的例子中,我们定义了一个Car类,它有两个属性:__speed和color。其中__speed是一个私有属性,只能在类的内部访问,我们通过set_speed和get_speed这两个方法来对其进行设置和获取。这样做的好处是我们可以在设置速度的时候加入一些验证逻辑,确保速度不会被设置为负数。DyJ28资讯网——每日最新资讯28at.com

二、继承(Inheritance)

继承是面向对象编程中的另一个重要概念,它允许我们定义一个基类,并创建一个或多个派生类,派生类继承了基类的属性和方法,并可以添加或覆盖基类的方法。DyJ28资讯网——每日最新资讯28at.com

代码示例:DyJ28资讯网——每日最新资讯28at.com

class Vehicle:    def __init__(self, speed):        self.speed = speed    def drive(self):        print(f"该交通工具正在以{self.speed}km/h的速度行驶")class Car(Vehicle):    def __init__(self, speed, brand):        super().__init__(speed)  # 调用基类的构造函数        self.brand = brand    def drive(self):        print(f"{self.brand}汽车正在以{self.speed}km/h的速度行驶")car = Car(80, "宝马")car.drive()  # 输出:宝马汽车正在以80km/h的速度行驶

在这个例子中,我们定义了两个类:Vehicle和Car。Vehicle是一个基类,有一个drive方法用来输出交通工具的行驶速度。Car是从Vehicle继承来的派生类,它除了继承了Vehicle的所有属性和方法外,还添加了一个新的属性brand,并重写了drive方法。当我们创建了一个Car的实例并调用drive方法时,它实际上调用的是Car自己的drive方法,而不是基类Vehicle的drive方法。DyJ28资讯网——每日最新资讯28at.com

三、多态(Polymorphism)

多态是指同一个操作作用于不同的对象上可以有不同的解释,即一个接口可以有多个实现。这使得我们可以用一个统一的接口来操作不同的对象,提高了代码的灵活性和可扩展性。DyJ28资讯网——每日最新资讯28at.com

代码示例:DyJ28资讯网——每日最新资讯28at.com

class Dog:    def speak(self):        return "汪汪汪"class Cat:    def speak(self):        return "喵喵喵"def animal_sound(animal):    print(animal.speak())dog = Dog()cat = Cat()animal_sound(dog)  # 输出:汪汪汪animal_sound(cat)  # 输出:喵喵喵

在这个例子中,我们定义了两个类:Dog和Cat,它们都有一个speak方法用来输出该动物的叫声。虽然Dog和Cat没有继承自同一个基类,但是它们都实现了speak方法,因此我们可以用相同的方式来调用它们的speak方法。animal_sound函数接受一个动物对象作为参数,并调用它的speak方法,无论传入的是Dog对象还是Cat对象,它都能正确地调用相应的方法,这就是多态的体现。通过上面的例子,我们可以看到,封装、继承和多态是面向对象编程的三大基石,它们使得我们的代码更加灵活和易于扩展。掌握了这三个概念,你就能更加自如地运用Python进行面向对象编程了。DyJ28资讯网——每日最新资讯28at.com

四、三者区别

下表总结了封装、继承和多态在面向对象编程中的主要区别:DyJ28资讯网——每日最新资讯28at.com

特性DyJ28资讯网——每日最新资讯28at.com

封装(Encapsulation)DyJ28资讯网——每日最新资讯28at.com

继承(Inheritance)DyJ28资讯网——每日最新资讯28at.com

多态(Polymorphism)DyJ28资讯网——每日最新资讯28at.com

定义
DyJ28资讯网——每日最新资讯28at.com

将对象的状态和行为组合在一起,隐藏对象内部实现的细节,只暴露有限的接口供外部访问
DyJ28资讯网——每日最新资讯28at.com

允许定义一个基类,并创建一个或多个派生类,派生类继承了基类的属性和方法
DyJ28资讯网——每日最新资讯28at.com

同一个操作作用于不同的对象上可以有不同的解释,即一个接口可以有多个实现
DyJ28资讯网——每日最新资讯28at.com

目的
DyJ28资讯网——每日最新资讯28at.com

提高程序的安全性,防止外部代码直接访问对象内部的状态,只能通过定义好的接口来操作对象
DyJ28资讯网——每日最新资讯28at.com

实现代码的复用,派生类可以复用基类的代码,也可以添加或覆盖基类的方法
DyJ28资讯网——每日最新资讯28at.com

提高代码的灵活性和可扩展性,通过统一的接口来操作不同的对象
DyJ28资讯网——每日最新资讯28at.com

实现方式
DyJ28资讯网——每日最新资讯28at.com

通过定义私有属性和公共方法来实现
DyJ28资讯网——每日最新资讯28at.com

通过类的继承来实现,派生类使用**super()**来调用基类的方法
DyJ28资讯网——每日最新资讯28at.com

通过方法的重写(Override)或者接口实现来实现
DyJ28资讯网——每日最新资讯28at.com

例子
DyJ28资讯网——每日最新资讯28at.com

类中定义了私有属性和公共方法,外部代码只能通过公共方法来操作私有属性
DyJ28资讯网——每日最新资讯28at.com

派生类继承基类的所有属性和方法,可以添加或覆盖基类的方法
DyJ28资讯网——每日最新资讯28at.com

不同的类实现相同的方法,通过相同的接口调用不同类的方法
DyJ28资讯网——每日最新资讯28at.com

从上表可以看出,封装、继承和多态是面向对象编程的三大特性,它们各有不同的目的和实现方式,但都旨在提高代码的可维护性和可扩展性。DyJ28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-16402-0.html一文学会Python面向对象中封装、继承、多态使用

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 这款轻量级 Java 表达式引擎 aviator,真不错!

下一篇: 记一次 .NET 某工厂无人车调度系统 线程爆高分析

标签:
  • 热门焦点
  • 直屏旗舰来了 iQOO 12和K70 Pro同台竞技

    旗舰机基本上使用的都是双曲面屏幕,这就让很多喜欢直屏的爱好者在苦等一款直屏旗舰,这次,你们等到了。据博主数码闲聊站带来的最新爆料称,Redmi下代旗舰K70 Pro和iQOO 12两款手
  • vivo TWS Air开箱体验:真轻 臻好听

    在vivo S15系列新机的发布会上,vivo的最新款真无线蓝牙耳机vivo TWS Air也一同发布,本次就这款耳机新品给大家带来一个简单的分享。外包装盒上,vivo TWS Air保持了vivo自家产
  • 5月安卓手机好评榜:魅族20 Pro夺冠

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年5月1日至5月31日,仅限国内市场。第一名:魅族20 Pro好评率:97.50%不得不感慨魅族老品牌还
  • 从 Pulsar Client 的原理到它的监控面板

    背景前段时间业务团队偶尔会碰到一些 Pulsar 使用的问题,比如消息阻塞不消费了、生产者消息发送缓慢等各种问题。虽然我们有个监控页面可以根据 topic 维度查看他的发送状态,
  • Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • 阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的&ldquo;征求意见版&rdquo;:1、取消P序列
  • 小米MIX Fold 3配置细节曝光:搭载领先版骁龙8 Gen2+罕见5倍长焦

    这段时间以来,包括三星、一加、荣耀等等有不少品牌旗下的最新折叠屏旗舰都得到了不少爆料,而小米新一代折叠屏旗舰——小米MIX Fold 3此前也屡屡被传
  • 华为Mate 60保护壳曝光:硕大后置相机模组 凸起程度有惊喜

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
  • 3699元!iQOO Neo8 Pro顶配版今日首销:1TB UFS 4.0同价位唯一

    5月23日,iQOO推出了全新的iQOO Neo8系列,包含iQOO Neo8和iQOO Neo8 Pro两个版本,其中标准版搭载高通骁龙8+,而Pro版更是首发搭载了联发科天玑9200+旗舰
Top