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

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

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

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

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

一、封装(Encapsulation)

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

代码示例:CD528资讯网——每日最新资讯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这两个方法来对其进行设置和获取。这样做的好处是我们可以在设置速度的时候加入一些验证逻辑,确保速度不会被设置为负数。CD528资讯网——每日最新资讯28at.com

二、继承(Inheritance)

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

代码示例:CD528资讯网——每日最新资讯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方法。CD528资讯网——每日最新资讯28at.com

三、多态(Polymorphism)

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

代码示例:CD528资讯网——每日最新资讯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进行面向对象编程了。CD528资讯网——每日最新资讯28at.com

四、三者区别

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • Mate60手机壳曝光 致敬自己的经典设计

    8月3日消息,今天下午博主数码闲聊站带来了华为Mate60的第三方手机壳图,可以让我们在真机发布之前看看这款华为全新旗舰的大致轮廓。从曝光的图片看,Mate 60背后摄像头面积依然
  • 印度登月最关键一步!月船三号今晚进入环月轨道

    8月5日消息,据印度官方消息,月船三号将于北京时间今晚21时30分左右开始近月制动进入环月轨道。这是该探测器能够成功的最关键步骤之一,如果成功将开始围
  • 在线图片编辑器,支持PSD解析、AI抠图等

    自从我上次分享一个人开发仿造稿定设计的图片编辑器到现在,不知不觉已过去一年时间了,期间我经历了裁员失业、面试找工作碰壁,寒冬下一直没有很好地履行计划.....这些就放在日
  • 使用LLM插件从命令行访问Llama 2

    最近的一个大新闻是Meta AI推出了新的开源授权的大型语言模型Llama 2。这是一项非常重要的进展:Llama 2可免费用于研究和商业用途。(几小时前,swyy发现它已从LLaMA 2更名为Lla
  • JVM优化:实战OutOfMemoryError异常

    一、Java堆溢出堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证 GC Roots 到对象之间有可达路径来避免垃 圾收集回收机制清除这些对象,当这些对象所占空间超过
  • 阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的&ldquo;征求意见版&rdquo;:1、取消P序列
  • 华为发布HarmonyOS 4:更好玩、更流畅、更安全

    在8月4日的华为开发者大会2023(HDC.Together)大会上,HarmonyOS 4正式发布。自2019年发布以来,HarmonyOS一直以用户为中心,经历四年多的发展HarmonyOS已
  • 三星电子Q2营收60万亿韩元 存储业务营收同比仍下滑超过50%

    7月27日消息,据外媒报道,从三星电子所发布的财报来看,他们主要利润来源的存储芯片业务在今年二季度仍不乐观,营收同比仍在大幅下滑,所在的设备解决方案
  • 三翼鸟智能家居亮相电博会,让用户体验更真实

    2021电博会在青岛国际会展中心开幕中,三翼鸟直接把“家”搬到了现场,成为了展会的一大看点。这也是三翼鸟继9月9日发布了行业首个一站式定制智慧家平台后的
Top