当前位置: 首页 > news >正文

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 编程运行环境&#xff08;保姆级教程&#xff09;_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)

最近更新频率明显下降我懒&#xff0c;那么今天就来记录一下我们的一些常用的API的整理以及ShellCode的加密。 1.WinAPI整理 问我为什么要整理&#xff1f; 就是用起来的时候要左翻右翻 &#xff1a;&#xff1a; 烦死了 1.VirtualAlloc VirtualAlloc(NULL,sizeof(buf),MEM_…...

Stable Diffusion 使用详解(3)---- ControlNet

背景 炼丹师在AI绘画的过程中&#xff0c;由于Stable Diffusion的原理是水滴式的扩散作图原理&#xff0c;其实在前面也有提到&#xff0c;他的发挥是‘不稳定’的&#xff0c;因为你没有办法做到精确控制&#xff0c;只能说是大致符合你的预期。你不能总依赖抽卡固定随机数种…...

pythonGame-实现简单的贪食蛇游戏

通过python简单复现贪食蛇游戏。 使用到的库函数&#xff1a; import pygame import time import random 游戏源码&#xff1a; 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年软件系统与信息处理国际会议&#xff08;ICSSIP 2024&#xff09;将于2024年10月25-27日在中国昆明举行。引领技术前沿&#xff0c;共谋创新未来。ICSSIP 2024将汇聚来自世界各地的专家学者&#xff0c;他们将在会上分享最新的研究成果、技术突破及实践经验。会议议题涵盖…...

使用vscode连接开发机进行python debug

什么是debug&#xff1f; 当你刚开始学习Python编程时&#xff0c;可能会遇到代码不按预期运行的情况。这时&#xff0c;你就需要用到“debug”了。简单来说&#xff0c;“debug”就是能再程序中设置中断点并支持一行一行地运行代码&#xff0c;观测程序中变量的变化&#xff…...

(家用)汽车充电桩项目总结分析

1. 项目选题背景 &#xff08;1&#xff09;社招&#xff1a;公司想做这个方向&#xff0c;先让学习测试一下&#xff0c;而且不做Web或者APP&#xff0c;以某一个模块或者某一个部分为主 &#xff08;2&#xff09;非社招&#xff1a;之前在学校做的一个学习的项目 2. 充电…...

JMeter接口测试:测试中奖概率!

介绍 Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具&#xff0c;用于对软件做压力测试。JMeter 最初被设计用于 Web 应用测试&#xff0c;但后来扩展到了其他测试领域&#xff0c;可用于测试静态和动态资源&#xff0c;如静态文件、Java 小服务程序、CGI 脚本、J…...

生成式人工智能之路,从马尔可夫链到生成对抗网络

人工智能&#xff08;Artificial intelligence&#xff0c;AI&#xff09;技术在过去几年中取得了显著进展&#xff0c;其中生成式AI&#xff08;Generative AI&#xff09;因其强大的内容生成能力而备受关注。生成式AI可以创建新的文本、图像、音频、视频、代码以及其他形式的…...

qt做的分页控件

介绍 qt做的分页控件 如何使用 创建 Pagination必须基于一个QWidget创建&#xff0c;否则会引发错误。 Pagination* pa new Pagination(QWidget*);设置总页数 Pagination需要设置一个总的页数&#xff0c;来初始化页码。 pa->SetTotalItem(count);设置可选的每页数量…...

MySQL with recursive 用法浅析

目录 写在前面 语句功能 with recursive 语法讲解 细节补充 “union all”语句 添加递归终止条件 写在前面 介绍“with recursive”用法的文章不少&#xff0c;但我都觉得讲的不够通俗&#xff0c;所以干脆自己写一篇。话不多说&#xff0c;进入正题。 语句功能 with r…...

ROS2常用命令集合

文章目录 指令帮助创建功能包功能包查找编译执行节点查看话题服务命令接口命令动作命令参数命令录制控制命令 指令帮助 ros2 --help # 帮助查看命令创建功能包 ros2 pkg create 包名 --build-type 构建类型 --dependencies 依赖列表 --node-name 可执行程序名称功能包查找 …...

VUE 子组件可以直接改变父组件的数据吗

子组件不可以直接改变父组件的数据。‌在Vue中&#xff0c;‌数据流是单向的&#xff0c;‌即父组件通过props向子组件传递数据&#xff0c;‌而子组件不能直接修改父组件的数据。‌这是为了维护数据流动的单向性和数据的可维护性。‌ 如果子组件需要修改父组件的数据&#xf…...

Redis 持久化详解

AOF 持久化 AOF持久化数据恢复相对RDB慢&#xff0c;文件也更大&#xff0c;但数据丢失的风险更小。 AOF 写入 将数据写入Redis内存后&#xff0c;将写数据的命令记录到AOP磁盘文件。 【结构】server.aof_buf 主线程写操作执行完之后&#xff0c;命令会先追加到 Redis 的 se…...

基于riscv64架构的Dayu800开发板的napi_demo开发介绍

itopen组织1、提供OpenHarmony优雅实用的小工具2、手把手适配riscv qemu linux的三方库移植3、未来计划riscv qemu ohos的三方库移植 小程序开发4、一切拥抱开源&#xff0c;拥抱国产化 一、环境准备工作 1.1 Ubuntu20.04环境配置 如果已经配置OpenHarmony的编译环境则…...

HAL STM32 SPI/ABZ/PWM方式读取MT6816磁编码器数据

HAL STM32 SPI/ABZ/PWM方式读取MT6816磁编码器数据 &#x1f4da;MT6816相关资料&#xff08;来自商家的相关资料&#xff09;&#xff1a; 资料&#xff1a;https://pan.baidu.com/s/1CAbdLBRi2dmL4D7cFve1XA?pwd8888 提取码&#xff1a;8888&#x1f4cd;驱动代码编写&…...

HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 多选题序号5

基础认证题库请移步&#xff1a;HarmonyOS应用开发者基础认证题库 注&#xff1a;有读者反馈&#xff0c;题库的代码块比较多&#xff0c;打开文章时会卡死。所以笔者将题库拆分&#xff0c;单选题20个为一组&#xff0c;多选题10个为一组&#xff0c;题库目录如下&#xff0c;…...

Tekion 选择 ClickHouse Cloud 提升应用性能和指标监控

本文字数&#xff1a;4187&#xff1b;估计阅读时间&#xff1a;11 分钟 作者&#xff1a;ClickHouse team 本文在公众号【ClickHouseInc】首发 Tekion 由前 Tesla CIO Jay Vijayan 于 2016 年创立&#xff0c;利用大数据、人工智能和物联网等技术&#xff0c;为其汽车客户解决…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

Device Mapper 机制

Device Mapper 机制详解 Device Mapper&#xff08;简称 DM&#xff09;是 Linux 内核中的一套通用块设备映射框架&#xff0c;为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程&#xff0c;并配以详细的…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...