Python基础4——面向对象
目录
1. 认识对象
2. 成员方法
2.1 成员方法的定义语法
3. 构造方法
4. 其他的一些内置方法
4.1 __str__字符串方法
4.2 __lt__小于符号比较方法
4.3 __le__小于等于符号比较方法
4.4 __eq__等号比较方法
5. 封装特性
6. 继承特性
6.1 单继承
6.2 多继承
6.3 pass关键字
6.4 复写
6.5 调用父类同名成员
7. 变量的类型注解
8. 函数(方法)的类型注解
8.1 形参类型注解语法:
8.2 返回值的类型注语法:
9. union类型注解
1. 多态
1. 认识对象
在程序中:
- 设计表格,称之为:设计类(class)
- 打印表格,称之为:创建对象
- 填写表格,称之为:为对象的属性赋值
2. 成员方法
类的定义:
class 类名称:
类的属性
类的行为
- class是关键字,表示要定义一个类
- 类的属性:即定义在类内部的变量(成员变量)
- 类的行为:即定义在类内部的函数(成员方法)
创建类对象的语法:对象 = 类名称()
2.1 成员方法的定义语法
语法:
![]()
可以看到,在方法定义的参数列表中,有一个self关键字,self关键字是成员方法定义时必须填写的:
- 它用来表示类对象自身的意思
- 当我们使用类对象调用方法时,self会被自动传入,所以不用明确写上self参数
- 在方法内部,想要访问类的成员变量时,必须使用self

self关键字尽管在参数列表中,但是传参的时候可以忽略他,如:

3. 构造方法
构造方法:__init__(),注意,init前后都是有两个下划线的。
构造方法实现功能:
- 在创建类对象的时候,会自动执行
- 在创建类对象的时候,将传入参数自动传递给__init__方法使用。

- 构造方法也是成员方法,不要忘记在参数列表中提供:self
- 在构造方法内定义成员变量,需要使用self关键字

4. 其他的一些内置方法
这些内置方法也称为魔术方法:
- __init__:构造方法
- __str__:字符串方法
- __lt__:小于、大于符号比较
- __le__:小于等于、大于等于符号比较
- __eq__:==符号比较
4.1 __str__字符串方法

当类对象需要被转换为字符串时,会输出以上的结果(内存地址)。
我们可以通过__str__方法,控制类转换为字符串的输出结果:

4.2 __lt__小于符号比较方法

直接对两个对象进行比较是不可以的,但可以使用__lt__方法来控制小于和大于符号比较的输出结果。

4.3 __le__小于等于符号比较方法
同__lt__用法类似。
4.4 __eq__等号比较方法
同__lt__用法类似
5. 封装特性
面向对象的三大特性:封装、继承、多态。
封装就是模仿现实世界提供一些私有成员和私有方法。两者的定义方法:
- 私有成员变量:以两个下划线开头加上变量名:__变量名
- 私有成员方法:以两个下划线开头加上方法名:__变量名(self)

同时,私有方法无法直接被类对象使用;私有变量无法被类对象赋值,类对象也无法获取值。

私有成员无法被类对象使用,但可以被其他内部成员使用。

6. 继承特性
6.1 单继承

语法:
class 类名(父类名):
类内容体
继承表示:将从父类那里继承来的成员变量和成员方法(不包含私有)。
6.2 多继承

语法:
class 类名(父类1,父类2,父类3,。。。):
类内容体
注意:多个父类中,如果有同名的成员,那么默认以继承顺序(从左到右的顺序)为优先级。
6.3 pass关键字
pass关键字是占位语句,用来保证函数(方法)或类定义的完整性,表示无内容,空的意思。
6.4 复写
子类继承父类的成员属性和成员方法后,如果对其不满意,可以进行重写。

6.5 调用父类同名成员
如果需要使用被复写的父类的成员,需要使用特殊的调用方式:
方式1:直接调用父类成员
- 使用成员变量:父类名.成员变量
- 使用成员方法:父类名.成员方法(self)
方式2:使用super()调用父类成员
- 使用成员变量:super().成员变量
- 使用成员方法:super().成员方法()
注意:只能在子类内部调用父类的同名成员;子类的类对象直接调用会调用子类复写的成员。

7. 变量的类型注解
注解功能:
- 帮助python的第三方工具对代码进行类型推断,协助做代码提示
- 帮助开发者自身对变量进行类型注释
语法1:变量:类型




注意:
- 元组类型设置详细注解,需要将每一个元素都标记出来
- 字典类型设置详细注解,需要2个类型,第一个是key,第二个是value
——————————————————————————————————————
语法2:#type:类型

另外,即使注释了错误的类型,程序也不会运行错误;因为这个说到底就是一个帮助我们使用的注释。
8. 函数(方法)的类型注解
8.1 形参类型注解语法:
def 函数方法名(形参名:类型,形参名:类型,。。):
pass

8.2 返回值的类型注语法:
def 函数方法名(形参名:类型,形参名:类型,。。)-> 返回值类型:
pass

9. union类型注解

1. 多态
多态:多态指的是多种状态,即完成某个行为时,使用不同的对象会得到不同的状态。

抽象类:

如上图,父类Animal的speak方法是空实现,这种写法就是抽象类(也称之为接口)
抽象类:含有抽象方法的类为抽象类
抽象方法:方法体是空实现的(pass)的为抽象方法
总结:

相关文章:
Python基础4——面向对象
目录 1. 认识对象 2. 成员方法 2.1 成员方法的定义语法 3. 构造方法 4. 其他的一些内置方法 4.1 __str__字符串方法 4.2 __lt__小于符号比较方法 4.3 __le__小于等于符号比较方法 4.4 __eq__等号比较方法 5. 封装特性 6. 继承特性 6.1 单继承 6.2 多继承 6.3 pas…...
Hive 核心知识点灵魂 16 问
本文目录 No1. 请谈一下 Hive 的特点No2. Hive 底层与数据库交互原理?No3. Hive 的 HSQL 转换为 MapReduce 的过程?No4. Hive 的两张表关联,使用 MapReduce 怎么实现?No5. 请说明 hive 中 Sort By,Order By࿰…...
聊聊探索式测试与敏捷实践
这是鼎叔的第五十二篇原创文章。行业大牛和刚毕业的小白,都可以进来聊聊。欢迎关注本专栏和微信公众号《敏捷测试转型》,大量原创思考文章陆续推出。探索式测试在敏捷测试象限中处于右上角,即面向业务且评价产品,这篇补充一下探索…...
社区宠物诊所管理系统
目录第一章概述 PAGEREF _Toc4474 \h 21.1引言 PAGEREF _Toc29664 \h 31.2开发背景 PAGEREF _Toc3873 \h 3第二章系统总体结构及开发 PAGEREF _Toc19895 \h 32.1系统的总体设计 PAGEREF _Toc6615 \h 32.2开发运行环境 PAGEREF _Toc13054 \h 3第三章数据库设计 PAGEREF _Toc2852…...
Vue项目创建首页发送axios请求
这是个全新的Vue项目,引入了ElementUI 将App.vue里的内容干掉,剩如下 然后下面的三个文件也可以删掉了 在views文件下新建Login.vue组件 到router目录下的index.js 那么现在的流程大概是这样子的 启动 写登陆页面 <template><div><el-form :ref"form"…...
Nginx
NginxNginxNginx可以从事的用途Nginx安装Nginx自带常用命令Nginx启动Nginx停止Nginx重启Nginx配置概要第一部分:全局块第二部分:events 块:第三部分:http块:Nginx Nginx是一个高性能的http和反向代理服务器࿰…...
2049. 统计最高分的节点数目
2049. 统计最高分的节点数目题目算法设计:深度优先搜索题目 传送门:https://leetcode.cn/problems/count-nodes-with-the-highest-score/ 算法设计:深度优先搜索 这题的核心是计算分数。 一个节点的分数 左子树节点数 右子树节点数 除自…...
Docker 架构简介
Docker 架构 Docker 包括三个基本概念: 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。容器&am…...
玄子Share-BCSP助学手册-JAVA开发
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b2gPyAnt-1676810001349)(./assets/%E7%8E%84%E5%AD%90Share%E4%B8%89%E7%89%88.jpg)] 玄子Share-BCSP助学手册-JAVA开发 前言: 此文为玄子,复习BCSP一二期后整理的文章&#x…...
利用React实现多个场景下的鼠标跟随框提示框
前言 鼠标跟随框的作用如下图所示,可以在前端页面上,为我们后续的鼠标操作进行提示说明,提升用户的体验。本文将通过多种方式去实现,从而满足不同场景下的需求。 实现原理 实现鼠标跟随框的原理很简单,就是监听鼠标在…...
【安全知识】——如何绕过cdn获取真实ip
作者名:白昼安全主页面链接: 主页传送门创作初心: 以后赚大钱座右铭: 不要让时代的悲哀成为你的悲哀专研方向: web安全,后渗透技术每日鸡汤: 现在的样子是你想要的吗?cdn简单来说就是…...
JavaScript内存泄露和垃圾回收机制
1、是什么?内存泄露(Memory leak)是在计算机科学中,由于疏忽或错误造成程序未能释放已经不再使用的内存。并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内…...
Kubernetes02:知识图谱
Kubernetes01:知识图谱 MESOS APACHE 分布式资源管理框架 2019-5 Twitter 》 Kubernetes Docker Swarm 2019-07 阿里云宣布 Docker Swarm 剔除 Kubernetes Google 10年容器化基础架构 borg Go语言 Borg 特点 轻量级:消耗资源小 开源 弹性伸缩 负载均…...
nginx-服务器banner泄漏风险
http { server_tokens off; # 隐藏Nginx版本号 .... }...
GCC 同名符号冲突解决办法
一、绪论 作为 C/C 的开发者,大多数都会清楚课本上动态库以及静态库的优缺点,在教科书上谈及到动态库的一个优点是可以节约磁盘和内存的空间,多个可执行程序通过动态库加载的方式共用一段代码段 ;而时至今日,再看看上…...
下一代视频编码技术2023
下一代视频编码技术 下面将从这两个角度来介绍华为云视频在下一代视频编码技术上的一些工作。这些技术得益于华为2012 媒体技术院全力支持。 2.1 下一代视频编码标准技术 从上图可以看出,下一代的视频编码标准大概分为三个阵营或者三个类型: 国际标准…...
最新最全中小微企业研究数据:海量创业公司信息与获取投资信息(1985-2021年)
一、企业获取投资名单&资方信息 数据来源:搜企网、企查查、天眼查 时间跨度:1985年8月-2021年9月 区域范围:全国范围 数据字段:企业名称、时间、获得投资金额以及投资方信息 部分数据: DateCompany_nameUnit…...
springboot数据源浅析
DataSourceAutoConfiguration分析 SpringBoot有一个自动配置DataSourceAutoConfiguration 为数据源配置 /META-INF/spring.factories文件找到DataSourceAutoConfiguration配置类 一、先来看下DataSourceAutoConfiguration配置类生效的时机,观察源码发现 Configura…...
2022黑马Redis跟学笔记.实战篇(七)
2022黑马Redis跟学笔记.实战篇 七4.11.附近的店铺功能4.11.1. GEO数据结构的基本用法1. 附近商户-导入店铺数据到GEO4.11.2. 获取附近的店铺1. 附近商户-实现附近商户功能4.9. 签到功能4.9.1.BitMap原理1. 用户签到-BitMap功能演示4.9.2.实现签到功能4.9.3.实现补签功能4.9.4.统…...
QT mp3音乐播放器实现框架,Qt鼠标事件,网络编程,QSqlite,Json解析,HTTP请求等
QT mp3音乐播放器实现框架,Qt鼠标事件,网络编程,QSqlite,Json解析,HTTP请求等框架搭建UI设计mp3.hmp3.cpp隐藏窗口标题 最大化 最小化 关闭框架搭建 .pro添加 # 网络 添加多媒体 数据库 QT network multimedia sql添加头…...
Face3D.ai Pro零基础入门:5分钟从照片到3D人脸,小白也能玩转
Face3D.ai Pro零基础入门:5分钟从照片到3D人脸,小白也能玩转 1. 引言:从照片到3D人脸的魔法 想象一下,用手机随手拍一张自拍,5分钟后就能得到一个可以360度旋转的3D人脸模型。这不是科幻电影里的场景,而是…...
Qwen3.5-2B生成Typora风格技术文档:Markdown与图表自动编排
Qwen3.5-2B生成Typora风格技术文档:Markdown与图表自动编排 1. 技术写作的新助手 技术文档写作一直是开发者头疼的问题。从项目README到API文档,再到技术报告,我们经常需要花费大量时间在格式调整和排版上。传统写作工具要么功能单一…...
Qwen3-VL-8B在智能客服场景的应用:让客服真正看懂用户图片
Qwen3-VL-8B在智能客服场景的应用:让客服真正看懂用户图片 1. 智能客服的视觉盲区 你有没有遇到过这样的情况:当用户给客服发送一张商品照片询问"这个配件能用在XX型号上吗?",得到的回复却是"请您提供商品编号&q…...
在WSL中一键部署Phi-4-mini-reasoning:Windows开发者的Linux模型推理环境搭建
在WSL中一键部署Phi-4-mini-reasoning:Windows开发者的Linux模型推理环境搭建 1. 为什么选择WSL部署Phi-4-mini-reasoning 对于习惯Windows环境的开发者来说,直接在本地运行Linux环境下的AI模型往往是个挑战。Windows Subsystem for Linux (WSL) 提供了…...
8舵机蜘蛛机器人嵌入式运动控制库设计
1. 项目概述JadeRobotics_Spiderbot 是一个专为8舵机蜘蛛机器人(SpiderBot)设计的嵌入式运动控制库,面向Arduino UNO、Nano、Mega等资源受限的8位MCU平台。该库不依赖外部实时操作系统或复杂中间件,采用纯C实现,以零动…...
高级应用:将Decision Transformer部署到生产环境的完整流程
高级应用:将Decision Transformer部署到生产环境的完整流程 【免费下载链接】decision-transformer Official codebase for Decision Transformer: Reinforcement Learning via Sequence Modeling. 项目地址: https://gitcode.com/gh_mirrors/de/decision-transfo…...
2026届学术党必备的降AI率平台横评
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 降低那个AIGC率的关键要点在于削弱机器生成所呈现出的模式化特性。其一,对句式结…...
告别OBS!用JavaCV+FFmpeg在Windows上搭建个人直播推流服务器(含Nginx配置)
用JavaCVFFmpeg构建Windows直播推流服务器的全栈指南 直播技术正在从专业领域向个人开发者渗透,但传统方案如OBS往往过于笨重且缺乏定制性。本文将带你用JavaCVFFmpegNginx搭建一套轻量级直播推流服务器,实现从视频采集、编码推流到服务端分发的完整链路…...
一次删错索引引发的血案:手把手教你复盘线上购物车故障(附完整报告模板)
一次删错索引引发的血案:手把手教你复盘线上购物车故障 那天凌晨3点,我被刺耳的电话铃声惊醒。值班同事急促的声音从听筒传来:"购物车服务完全瘫痪,用户投诉像雪片一样涌来。"当我跌跌撞撞赶到公司时,整个技…...
2025届毕业生推荐的六大降重复率网站推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 针对用户试图降低文本里人工智能生成内容的可识别度,降AIGC工具发挥作用…...
