Python-对象的三大特性

news2024/11/24 19:24:32

Python-对象的三大特性

更多优秀文章,请扫码关注个人微信公众号或搜索“程序猿小杨”添加。

          面向对象编程,是许多编程语言都支持的一种编程思想。简单理解是:基于模板(类)去创建实体(对象),使用对象完成功能开发。面向对象的三大特征:1、封装; 2、继承; 3、多态。

一、封装

二、继承

语法将父类的成员变量和成员方法拿来使用。

#单继承class  类名(父类名) :    类内容体    #多继承class  类名(父类名1,父类名2,父类名3,父类名4...父类N) :    类内容体

多继承注意事项:

      多个父类中,如果有同名的成员,那么默认以继承顺序(从左到右)为优先级。即:先继承的保留,后继承的被覆盖。

相关代码:

#定义一个手机类from classPack.Nfc import Nfcfrom classPack.Photo import Photo#继承 Photo,Nfc 多继承class Phone(Photo,Nfc):    #定义成员变量    name=None  #名称    price=None  #价格    # 定义成员方法    def p_info(self):        print(f"我是:{self.name},我的价格是:{self.price}")
#定义一个NFC功能class Nfc:    type=None    is_open=None    def nfc_say(self):        print(f"我是NFC,我的类型是:{self.type},我的状态是:{self.is_open}")
#照相类class Photo:    is_open=None #是否打开    f_type=None  #功能    def photo_say(self):        print(f"大家好,我是照相机,我的状态是:{self.is_open},我的功能是:{self.f_type}")

2.2、复写

参考案例:

#定义一个手机类from classPack.Nfc import Nfcfrom classPack.Photo import Photo#继承 Photo,Nfc 多继承class Phone(Photo,Nfc):    #定义成员变量    name=None  #名称    price=None  #价格    # 定义成员方法    def p_info(self):        print(f"我是:{self.name},我的价格是:{self.price}")        #调用Phono中的成员变量或成员方法        Phone.photo_say(self)        super().nfc_say()

注意:只可以在子类内部调用父类的同名成员,子类的实体类对象调用默认是调用子类复写的。

2.3、类型注解

语法:一般无法看出类型的时候加上类型注释。(注意:仅仅是个备注,不影响程序运行使用)

1、变量:类型 2、注释 #type:类型3、union联合注解

代码:

import random##注解#1、为变量设置类型注解var_01:int =Nonevar_02:str=Nonevar_03:float=None
#2、类对象类型注解class Student:    pass #代表什么都不做处理student:Student=Student()
#3、基础容器注解list_01:list=[]tuple_01:tuple=()str_01:str=""dict_01:dict={}##详细注释list_01:list[int]=[1,2,3]dict_02:dict[str,int]={"key01":12,"key02":23}
#4、除了使用 变量:类型 还可以使用注释  #type:类型var_03=random.randint(1,100)  #type:int

函数(方法)注解:

语法:返回值类型注解->

def 函数方法名(形参:类型,...形参:类型)->返回值类型:    pass

参考案例:

#5、对形参进行注解def fun_01(x:int,y:int):    return x+y print(fun_01(2,3))
#6、对函数返回值进行注解def fun_02(data:list)->list:    return datalist_01=[1,2,3]print(fun_02(list_01))

Union联合注解:变量、函数(方法)、形参和返回值都可以

参考案例:

# 7、使用union进行联合注解dict_03:dict[str,Union[str,int]]


三、多态

什么是多态?

      多态指的是,同一个行为,使用不同的对象获得不同的状态。

      如,定义函数(方法),通过类型注解声明需要父类对象,实际传入子类对象进行工作,从而获得不同的工作状态。

什么是抽象类(接口)

      包含抽象方法的类,称之为抽象类。抽象方法是指:没有具体实现的方法(psss)称之为抽象方法。

抽象类的作用

     多用于做顶层设计(设计标准),以便子类做具体实现。

也是对子类的一种软性约束,要求子类必须复写(实现)父类的一些方法

并多态获得不同的工作状态。

总结:1、抽象的父类设计(设计标准); 2、具体的子类实现(实现标准)。

参考案例:

###多态#定义一个空调抽象类class Ac:    #制热功能    def make_hot(self):        pass    #制冷功能    def make_cool(self):        pass    #出风功能    def make_wind(self):        pass
#定义一个子类 美的class Meidi_ac(Ac):    #复写父类的相关方法    # 制热功能    def make_hot(self):        print("我是美的空调的制热功能")
    # 制冷功能    def make_cool(self):        print("我是美的空调的制冷功能")
    # 出风功能    def make_wind(self):        print("我是美的空调的制风功能")
#定义一个子类 格力class Gree_ac(Ac):    #复写父类的相关方法    # 制热功能    def make_hot(self):        print("我是格力空调的制热功能")
    # 制冷功能    def make_cool(self):        print("我是格力空调的制冷功能")
    # 出风功能    def make_wind(self):        print("我是格力空调的制风功能")#定义在一个类中使用class UseClass():    def use_cool(ac:Ac):        ac.make_cool()
#在类中使用 同一行为,不同状态meidi_ac=Meidi_ac()gree_ac=Gree_ac()UseClass.use_cool(meidi_ac)UseClass.use_cool(gree_ac)

更多优秀文章,请扫码关注个人微信公众号或搜索“程序猿小杨”添加。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/558816.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

好程序员:web前端学习要多久?自学前端能找到工作吗?

不少小伙伴看到前端这个岗位发展前景好,薪资待遇高,工作相对稳定,很多人都想转行学前端,但好程序员想说的是,这些都不了解,你怎么能把前端学会呢。所以想要转行学前端的小伙伴们还是赶紧收藏这篇文章吧~ 一…

[Nacos] Nacos Server主要类和接口 (五)

InstanceController: 处理器, 处理服务实例的心跳和注册等请求。 core/Service: 在Nacos客户端的一个微服务名称定义的微服务, 在Nacos服务端是以Service实例的形式出现的。类似于ServiceInfo, ServiceInfo为客户端服务, Service为服务端服务。 RecordListener: Service类实现…

2022年华数杯数学建模A题环形振荡器的优化设计解题全过程文档及程序

2022年华数杯全国大学生数学建模 A题 环形振荡器的优化设计 原题再现: 芯片是指内含集成电路的硅片,在我们日常生活中的手机、电脑、电视、家用电器等领域都会使用到,是高端制造业的核心基石。芯片的制造工艺非常复杂,要经历上千…

ChatGPT的原理与前端领域实践 | 京东云技术团队

一、ChatGPT 简介 ChatGPT的火爆 ChatGPT作为一个web应用,自22年12月发布,仅仅不到3个月的时间,月活用户就累积到1亿。在此之前,最快记录的保持者也需要9个月才达到月活1亿。 ChatGPT的反爬 https://chat.openai.com 因为各种政…

堆排序详解(Heap Sort)

本文已收录于专栏 《算法合集》 目录 一、简单释义1、算法概念2、算法目的3、算法思想4、算法性质 二、核心思想构建排序 三、图形展示宏观展示微观展示 四、算法实现实现思路代码实现客户端调用构造堆的方法元素交换的方法元素比较的方法 运行结果 五、算法描述1、问题描述2、…

如何在 Windows 10 上查找电脑型号

在Windows 10上,计算机型号在许多情况下都可以派上用场。例如,型号可以更容易地找到正确的硬件升级(如内存、存储驱动器、显示器和电源)。或者,如果你必须解决问题或联系技术支持。它还可以方便地将设备编目到库存中。 尽管制造商通常在笔记本电脑或台式机的机箱上使用贴…

Android SDK研发解决方案宝典

Android SDK研发很难整,非常烧脑,与app研发有很多不同。 遇到的问题有很多,各种崩溃,各种空指针,各种冲突需要解决。 所以开发前一定要提前规划好,做好规范。我把我这边一些问题做了记录和分享。 问题1&…

获取订单API接口系列,可接入erp系统场景

抖音和拼多多是目前国内最为火爆的社交和电商平台,为了让更多的开发者能够轻松利用其庞大的用户基础和活跃度,我们提供了相关的订单接口,可帮助开发者快速便捷地完成订单的创建、查询、调整等操作,从而更好地促进业务的发展。以下…

React项目搭建

一、项目搭建(不采用vite方式) 使用create-react-app生成项目 npx create-react-app pc 进入根目录 cd pc 启动项目 npm start 调整项目目录结构 /src/assets 项目资源文件,比如,图片 等/components 通用组件/pag…

分布式事务解决方案探讨

分布式事务解决方案 一、什么是事务?二、什么是分布式事务?三、分布式事务的理论模型3.1 X/Open 分布式事务模型3.1.1 X/Open事务执行流程3.1.2 XA 协议 3.2 两阶段提交协议3.3 三阶段提交协议 四、分布式事务场景解决方案4.1 TCC补偿方案4.2 基于可靠性…

密码学基本原理和发展——近代密码学

目录 1 密码机通信模型 2 Enigma密码机构造 3 Enigma密码机加解密过程 3.1 加密过程 3.2 解密过程 4 Enigma密码机的安全性 5 Enigma密码机破解 5.1 波兰雷耶夫斯基破解 5.2 图灵破解 近代密码一般指20世纪初~20世纪70年代期间的密码技术。20世纪初电报的出…

快速上手项目1:基于FaceNet的人脸识别项目

快速上手项目1:基于FaceNet的人脸识别项目 说明 ​ 本来想自己复现一下facenet的,但是发现facenet已经被做成了python的第三方库,于是自己用了用,发现挺简单的,然后又看了看源码,感觉模型架构实现部分很简单…

说说 HWND_TOP 和 HWND_TOPMOST 的区别

初看上去,HWND_TOP 和 HWND_TOPMOST 有点类似,但是实际上在调用 DeferWindowPos 或者 SetWindowPos时,它们之间的差别还挺大。 在同级窗口的维护机制中,有一个概念叫做 Z 序 (Z-order) 。出于此讨论的目的,顶级窗口也…

音容笑貌,两臻佳妙,人工智能AI换脸(deepfake)技术复刻《卡萨布兰卡》名场面(Python3.10)

影史经典《卡萨布兰卡》是大家耳熟能详的传世名作,那一首壮怀激烈,激奋昂扬的马赛曲,应当是通片最为激动人心的经典桥段了,本次我们基于faceswap和so-vits库让AI川普复刻美国演员保罗亨雷德高唱《马赛曲》的名场面。 配置人脸替换…

《斯坦福数据挖掘教程·第三版》读书笔记(英文版)Chapter 8 Advertising on the Web

来源:《斯坦福数据挖掘教程第三版》对应的公开英文书和PPT Chapter 8 Advertising on the Web There are several factors that must be considered in evaluating ads: The position of the ad in a list has great influence on whether or not it is clicked.…

Linkage Mapper 之 Barrier Mapper 功能解析(含实际案例分析)

✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: Linkage Mapper解密数字世界链接 大草原松鸡"(Greater Sage Grouse)的Lek Kernals(即HCAs),以及连接、连接障碍和恢复机会效果图: 图片

python+Django音乐播放器网站系统0tr3w

音乐网站系统的后台开发目标是以信息管理系统的管理和开发方法,用目前现有的新技术进行系统开发,提供后台管理员高度友好的界面操作以及迅捷的信息处理。而前台的开发目标是以用户的需求作为主导,提供对用户而言非常友好的界面操作环境以及完…

实时频谱-1.1基本概念

RF信号 RF(射频)是Radio Frequency的缩写,表示可以辐射到空间的电磁频率,频率范围从300KHz~30GHz之间。 中频 IF(intermediate frequency),用来在中频衡量AM或FM调谐器抑制外来干扰的能力,数…

基于springboot在线外卖系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SpringBoot 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:…

You Only Look Once: 革命性目标检测算法论文解析

You Only Look Once 全论文完整翻译 You Only Look Once: Unified, Real-Time Object Detection 摘要 我们介绍了一种名为YOLO的新型目标检测方法。在目标检测的先前工作中,人们将分类器重新应用于执行检测任务。相反,我们将目标检测视为一个回归问题&a…