Python 高阶语法
前言:
我们通过上篇文章学习了Python的基础语法,接下来我们来学习Python的高阶语法
1.初识对象
在Python中我们可以做到和生活中那样,设计表格、生产表格、填写表格的组织形式的
面向对象包含 3 大主要特性:
封装
继承
多态
(内容靠后)
1.1使用对象组织数据
在程序中设计表格,我们称之为:设计类(class)
在程序中打印生产表格,我们称之为:创建对象
在程序中填写表格,我们称之为:对象属性赋值
2.成员方法
2.1类的定义和使用
类的语法:
创建类对象的语法:
类
2.2成员变量和成员方法
我们可以看出,类中:
• 不仅可以定义属性用来记录数据
• 也可以定义函数,用来记录行为其中:
• 类中定义的属性(变量),我们称之为:成员变量
• 类中定义的行为(函数),我们称之为:成员方法注意:
定义在类内部的函数,我们称之为方法
2.3成员方法的定义语法
在类中定义成员方法和定义函数基本一致,但仍有细微区别:
我们可以看到,在方法定义的参数列表中,有一个: self 关键字
self 关键字是成员方法定义的时候,必须填写的
• 它用来表示类对象自身的意思
• 当我们使用类对象调用方法的时候, self 会自动被 python 传入注意:
在方法内部,想要访问类的成员变量,必须使用 self
例如:
不过,self 关键字,尽管在参数列表中,但是传参的时候可以忽略它
可以看到,在传入参数的时候, self 是透明的,可以不用理会它
3.类和对象
3.1面向对象编程
类只是一种程序内的“设计图纸”,需要基于图纸生产实体(对象),才能正常工作
这种套路,称之为:面向对象编程
3.2语法
基于类创建对象的语法:
3.3在程序中通过类来描述
3.4基于类创建对象
4.构造方法
4.1属性(成员变量)的赋值
这种方法略显繁琐
4.2 __init__()构造方法
• 构建类时传入的参数会自动提供给 __init__ 方法
• 构建类的时候 __init__ 方法会自动执行注意:
构造方法也是成员方法,不要忘记在参数列表中提供: self
5.魔术方法
5.1 __str__ 字符串方法
当类对象需要被转换为字符串之时,会输出如下结果(内存地址)
我们可以通过 __str__ 方法,控制类转换为字符串的行为
5.2 __lt__ 小于符号比较方法
直接对 2 个对象进行比较是不可以的
但是在类中实现 __lt__ 方法,即可同时完成:小于符号 和 大于符号 2 种比较
比较大于的魔术方法是:__gt__
5.3__le__ 小于等于比较符号方法
用法跟上面一样
5.4 __eq__ 比较运算符实现方法
注意:
不实现 __eq__ 方法,对象之间可以比较,但是是比较内存地址,也即是:不同对象 == 比较一定是 False 结果
6. 封装

6.1对用户隐藏的属性和行为
现实世界中的事物,有属性和行为
但是不代表这些属性和行为都是开放给用户使用的
苹果越狱、安卓 root ,也是为了突破权限使用这些对用户隐藏的属性和行为
6.2私有成员
类中提供了私有成员的形式来支持。
• 私有成员变量
• 私有成员方法定义私有成员的方式非常简单,只需要:
• 私有成员变量:变量名以 __ 开头( 2 个下划线)
• 私有成员方法:方法名以 __ 开头( 2 个下划线)
6.3使用私有成员
私有方法无法直接被类对象使用
私有变量无法赋值,也无法获取值
私有成员无法被类对象使用,但是可以被其它的成员使用
7.继承
7.1什么是继承?
继承表示:将从父类那里继承(复制)来成员变量和成员方法(不含私有)
代码的实现
并且,继承分为:单继承和多继承
7.2单继承
语法:
操作:
7.3多继承
Python 的类之间也支持多继承,即一个类,可以继承多个父类
如下:
语法:
操作:
注意:
多个父类中,如果有同名的成员,那么默认以继承顺序(从左到右)为优先级
即:先继承的保留,后继承的被覆盖
7.4复写
子类继承父类的成员属性和成员方法后,如果对其“不满意”,那么可以进行复写
即:在子类中重新定义同名的属性或方法即可
7.5调用父类同名成员
一旦复写父类成员,那么类对象调用成员的时候,就会调用复写后的新成员
如果需要使用被复写的父类的成员,需要特殊的调用方式
方式1:
• 调用父类成员
使用成员变量:父类名 . 成员变量
使用成员方法:父类名 . 成员方法 (self)方式 2 :
• 使用 super() 调用父类成员
使用成员变量: super(). 成员变量
使用成员方法: super(). 成员方法 ()
注意:
只能在子类内调用父类的同名成员
子类的类对象直接调用会调用子类复写的成员
相关文章:
Python 高阶语法
前言: 我们通过上篇文章学习了Python的基础语法,接下来我们来学习Python的高阶语法 1.初识对象 在Python中我们可以做到和生活中那样,设计表格、生产表格、填写表格的组织形式的 面向对象包含 3 大主要特性: 封装 继承 …...
开始尝试从0写一个项目--前端(三)
器材管理板块 添加器材管理导航 src\views\home\Home.vue src\router\index.js src\views\equipment\Equipment.vue <template><div>hello!</div></template> 测试 搜索导航分页查询 src\views\equipment\Equipment.vue <template><div&…...
Visual stdio code 运行C项目环境搭建
参考 [1]VS Code 配置 C/C 编程运行环境(保姆级教程)_visual studio code c配置-CSDN博客 [2]最新VS code配置C/C环境(tasks.json, launch.json,c_cpp_properties.json)及运行多个文件、配置Cmake_vscode launch.json如何配置-CSDN博客 先装visual stdi…...
免杀笔记 -->API的整理Shellcode加密(过DeFender)
最近更新频率明显下降我懒,那么今天就来记录一下我们的一些常用的API的整理以及ShellCode的加密。 1.WinAPI整理 问我为什么要整理? 就是用起来的时候要左翻右翻 :: 烦死了 1.VirtualAlloc VirtualAlloc(NULL,sizeof(buf),MEM_…...
Stable Diffusion 使用详解(3)---- ControlNet
背景 炼丹师在AI绘画的过程中,由于Stable Diffusion的原理是水滴式的扩散作图原理,其实在前面也有提到,他的发挥是‘不稳定’的,因为你没有办法做到精确控制,只能说是大致符合你的预期。你不能总依赖抽卡固定随机数种…...
pythonGame-实现简单的贪食蛇游戏
通过python简单复现贪食蛇游戏。 使用到的库函数: import pygame import time import random 游戏源码: import pygame import time import randompygame.init()white (255, 255, 255) yellow (255, 255, 102) black (0, 0, 0) red (213, 50, 80…...
2024年软件系统与信息处理国际会议(ICSSIP 2024)即将召开!
2024年软件系统与信息处理国际会议(ICSSIP 2024)将于2024年10月25-27日在中国昆明举行。引领技术前沿,共谋创新未来。ICSSIP 2024将汇聚来自世界各地的专家学者,他们将在会上分享最新的研究成果、技术突破及实践经验。会议议题涵盖…...
使用vscode连接开发机进行python debug
什么是debug? 当你刚开始学习Python编程时,可能会遇到代码不按预期运行的情况。这时,你就需要用到“debug”了。简单来说,“debug”就是能再程序中设置中断点并支持一行一行地运行代码,观测程序中变量的变化ÿ…...
(家用)汽车充电桩项目总结分析
1. 项目选题背景 (1)社招:公司想做这个方向,先让学习测试一下,而且不做Web或者APP,以某一个模块或者某一个部分为主 (2)非社招:之前在学校做的一个学习的项目 2. 充电…...
JMeter接口测试:测试中奖概率!
介绍 Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做压力测试。JMeter 最初被设计用于 Web 应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源,如静态文件、Java 小服务程序、CGI 脚本、J…...
生成式人工智能之路,从马尔可夫链到生成对抗网络
人工智能(Artificial intelligence,AI)技术在过去几年中取得了显著进展,其中生成式AI(Generative AI)因其强大的内容生成能力而备受关注。生成式AI可以创建新的文本、图像、音频、视频、代码以及其他形式的…...
qt做的分页控件
介绍 qt做的分页控件 如何使用 创建 Pagination必须基于一个QWidget创建,否则会引发错误。 Pagination* pa new Pagination(QWidget*);设置总页数 Pagination需要设置一个总的页数,来初始化页码。 pa->SetTotalItem(count);设置可选的每页数量…...
MySQL with recursive 用法浅析
目录 写在前面 语句功能 with recursive 语法讲解 细节补充 “union all”语句 添加递归终止条件 写在前面 介绍“with recursive”用法的文章不少,但我都觉得讲的不够通俗,所以干脆自己写一篇。话不多说,进入正题。 语句功能 with r…...
ROS2常用命令集合
文章目录 指令帮助创建功能包功能包查找编译执行节点查看话题服务命令接口命令动作命令参数命令录制控制命令 指令帮助 ros2 --help # 帮助查看命令创建功能包 ros2 pkg create 包名 --build-type 构建类型 --dependencies 依赖列表 --node-name 可执行程序名称功能包查找 …...
VUE 子组件可以直接改变父组件的数据吗
子组件不可以直接改变父组件的数据。在Vue中,数据流是单向的,即父组件通过props向子组件传递数据,而子组件不能直接修改父组件的数据。这是为了维护数据流动的单向性和数据的可维护性。 如果子组件需要修改父组件的数据…...
Redis 持久化详解
AOF 持久化 AOF持久化数据恢复相对RDB慢,文件也更大,但数据丢失的风险更小。 AOF 写入 将数据写入Redis内存后,将写数据的命令记录到AOP磁盘文件。 【结构】server.aof_buf 主线程写操作执行完之后,命令会先追加到 Redis 的 se…...
基于riscv64架构的Dayu800开发板的napi_demo开发介绍
itopen组织1、提供OpenHarmony优雅实用的小工具2、手把手适配riscv qemu linux的三方库移植3、未来计划riscv qemu ohos的三方库移植 小程序开发4、一切拥抱开源,拥抱国产化 一、环境准备工作 1.1 Ubuntu20.04环境配置 如果已经配置OpenHarmony的编译环境则…...
HAL STM32 SPI/ABZ/PWM方式读取MT6816磁编码器数据
HAL STM32 SPI/ABZ/PWM方式读取MT6816磁编码器数据 📚MT6816相关资料(来自商家的相关资料): 资料:https://pan.baidu.com/s/1CAbdLBRi2dmL4D7cFve1XA?pwd8888 提取码:8888📍驱动代码编写&…...
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 多选题序号5
基础认证题库请移步:HarmonyOS应用开发者基础认证题库 注:有读者反馈,题库的代码块比较多,打开文章时会卡死。所以笔者将题库拆分,单选题20个为一组,多选题10个为一组,题库目录如下,…...
Tekion 选择 ClickHouse Cloud 提升应用性能和指标监控
本文字数:4187;估计阅读时间:11 分钟 作者:ClickHouse team 本文在公众号【ClickHouseInc】首发 Tekion 由前 Tesla CIO Jay Vijayan 于 2016 年创立,利用大数据、人工智能和物联网等技术,为其汽车客户解决…...
卡梅德生物技术快报|骆驼纳米抗体:从原核表达、高通量测序到分子对接全流程实现
1. 问题背景(技术痛点)靶向结合分子开发中,传统抗体制备存在:分子量大,扩散与穿透效率有限;文库构建与淘选周期长,难以规模化;原核表达与纯化体系不稳定,批次差异大&…...
NotebookLM技能集成:自动化文档问答与RAG应用实践
1. 项目概述:当NotebookLM遇上自定义技能最近在折腾AI工具链的时候,发现了一个挺有意思的项目:jasontsaicc/notebooklm-studio-skill。乍一看这个名字,你可能和我最初的反应一样,有点摸不着头脑。NotebookLM我知道&…...
深入理解C/C++混合编程
在工作中,C、C密不可分,做我们嵌入式方面的,当然更多的是C,但,有时候却少不了C,而且是C、C混搭(混合编程)在一起的,比如,RTP视频传输,live555多媒…...
懒人必备!OpenClaw 汉化版一键配置上手教程
一、Windows 11 安装 OpenClaw 必看说明 OpenClaw(国内用户昵称"小龙虾")是一款广受欢迎的开源本地AI助手,GitHub星标数已超28万。它集成了多项实用功能:电脑自动操控、智能文件管理、浏览器自动化以及办公流程自动化等…...
3PEAK思瑞浦 TPA1811-S5TR SOT23-5 精密运放
特性 供电电压:4伏至30伏 低功耗:在25C时为55A(典型值) 低偏置电压:8V在25C(最大值) 零漂:0.01V/C 轨到轨输出 增益带宽积:500kHz 斜率:0.3V/us...
OBS高级计时器:7种计时模式让直播时间管理更简单
OBS高级计时器:7种计时模式让直播时间管理更简单 【免费下载链接】obs-advanced-timer 项目地址: https://gitcode.com/gh_mirrors/ob/obs-advanced-timer 在直播和视频制作中,时间管理是提升专业度的关键环节。obs-advanced-timer作为一款专为O…...
STM32多任务处理实战:从裸机调度到FreeRTOS应用详解
1. 项目概述与核心需求解析在嵌入式开发领域,尤其是基于STM32这类资源受限但功能强大的微控制器时,我们常常会遇到一个核心矛盾:硬件只有一个CPU核心,但软件功能却要求它“同时”处理多个任务。比如,一个智能温控器需要…...
如何掌握Node.js模块系统:Node.js-Design-Patterns-Third-Edition深度解析
如何掌握Node.js模块系统:Node.js-Design-Patterns-Third-Edition深度解析 【免费下载链接】Node.js-Design-Patterns-Third-Edition Node.js Design Patterns Third Edition, published by Packt 项目地址: https://gitcode.com/gh_mirrors/no/Node.js-Design-Pa…...
从赛场到职场:一份高职物联网技能大赛任务书的实战拆解与能力映射
1. 竞赛任务书背后的物联网技术全景 高职物联网技能大赛的任务书就像一份浓缩版的行业项目说明书,里面藏着物联网技术的完整技术栈。我第一次看到这份任务书时,发现它完美地覆盖了物联网的三大层级:感知层、传输层和应用层。 感知层设备选型与…...
如何快速掌握Diablo Edit2:暗黑破坏神2终极角色编辑器使用指南
如何快速掌握Diablo Edit2:暗黑破坏神2终极角色编辑器使用指南 【免费下载链接】diablo_edit Diablo II Character editor. 项目地址: https://gitcode.com/gh_mirrors/di/diablo_edit Diablo Edit2是一款功能强大的暗黑破坏神2角色存档编辑器,支…...



































