Python基础4——面向对象

news2024/9/23 3:31:21

目录

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)的为抽象方法

总结:

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

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

相关文章

MySQL数据库调优————ORDER BY语句

ORDER BY调优的核心原理,原则是利用索引的有序性跳过排序环节 关于ORDER BY语句的一些尝试 我们使用employees表进行尝试,索引情况如下 在执行计划的结果中,Extra里如果存在,Using filesort则表示,排序没有使用到索…

JavaScript 代码规范

文章目录JavaScript 代码规范JavaScript 代码规范变量名空格与运算符代码缩进语句规则对象规则每行代码字符小于 80命名规则HTML 载入外部 JavaScript 文件使用 JavaScript 访问 HTML 元素文件扩展名使用小写文件名JavaScript 代码规范 所有的 JavaScript 项目适用同一种规范。…

PADS设计基础

目录 1 PADS设计流程简介 2 快捷键 2.1鼠标指令 2.2快捷键 3元件库概述 3.1元件库分类 3.2创建元件库 3.3新的元件类型的创建 3.3.1 插座的创建 1 PADS设计流程简介 常规PADS设计流程:设计启动→建库→原理图设计→网表调入→布局→布线→验证优化→设计资料输出→加…

VUE3源码分析————rollup打包遇见问题

文章目录一、require无法使用二、The requested module xxx does not provide an export named default三、__filename无法使用四、path.resolve() arguments must be a string一、require无法使用 在使用rullup打包的过程中,我们需要在最外层的package.json文件中…

时间序列分解法

影响时间序列变化的因素通常由长期趋势,季节变动,周期变动,不规则变动几部分组成 长期趋势指现象在较长时期内持续发展变化的一种趋向或状态。季节变动是由于季节的变化引起的现象发展水平的规则变动(波动长度固定)周…

n阶数字回转方阵 ← 模拟法

【问题描述】 请编程输出如下数字回旋方阵。 【算法代码】 #include <bits/stdc.h> using namespace std;const int maxn100; int z[maxn][maxn];void matrix(int n) {int num2;z[0][0]1;int i0,j1;while(i<n && j<n) {while(i<j) z[i][j]num;while(j&…

Redis底层原理(持久化+分布式锁)

Redis底层原理 持久化 Redis虽然是个内存数据库&#xff0c;但是Redis支持RDB和AOF &#xff08;Redis Database Backup file&#xff08;Redis数据备份文件&#xff09;&#xff0c;也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中 &#xff1b;Appen…

基于粒子群优化算法的电动汽车充放电V2G研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

CMMI-质量保证

质量保证&#xff08;Quality Assurance, QA&#xff09;的目的是提供一种有效的人员组织形式和管理方法&#xff0c;通过客观地检查和监控“过程质量”与“产品质量”&#xff0c;从而实现持续地改进质量。质量保证是一种有计划的、贯穿于整个产品生命周期的质量管理方法。质量…

Java ~ Collection/Executor ~ LinkedBlockingDeque【总结】

一 概述 简介 LinkedBlockingDeque&#xff08;链接阻塞双端队列&#xff09;类&#xff08;下文简称链接阻塞双端队列&#xff09;是BlockingDeqeue&#xff08;阻塞双端队列&#xff09;接口的唯一实现类&#xff0c;采用链表的方式实现。链接阻塞双端队列与LinkedBlockingQu…

【Java|golang】1792. 最大平均通过率---封装最小堆

一所学校里有一些班级&#xff0c;每个班级里有一些学生&#xff0c;现在每个班都会进行一场期末考试。给你一个二维数组 classes &#xff0c;其中 classes[i] [passi, totali] &#xff0c;表示你提前知道了第 i 个班级总共有 totali 个学生&#xff0c;其中只有 passi 个学…

Windows使用ssh协议远程连接ubuntu linux系统

Windows使用ssh协议远程连接ubuntu linux系统一、Windows远程连接ubuntu linux系统二、开启ubuntu ssh服务三、获取ubuntu子系统的ip地址四、从windows上通过ssh连接到ubuntu子系统五、设置ubuntu系统ssh自启动&#xff08;18.04&#xff09;一、Windows远程连接ubuntu linux系…

【JavaScript】JavaScript基本使用方法

如何回复程序员发来的短信&#xff1a;Hello world —hello nerd. 前言&#xff1a; 大家好&#xff0c;我是程序猿爱打拳。今天我给大家讲解的是初识JavaScript中基本组成成分、引入方法、输入输出语句&#xff0c;并用源码与效果图的方式展示给大家。 目录 1.JavaScript组成…

手机文字转语音软件哪个好用?超火的两款好用的文字转语音软件

有很多小伙伴对短视频配音比较感兴趣&#xff0c;但方方面面了解得不多&#xff0c;比如&#xff1a;配音有哪几种方法&#xff1f;需要注意些什么&#xff1f;用手机就可以操作么&#xff1f;好用的文字转语音软件有哪些&#xff1f;这篇文&#xff0c;小编就带大家简单了解一…

(C语言篇)扫雷的实现

文章目录 一、开始时的基本思维&#xff1a;二、进入游戏的逻辑(test.c文件中实现)三、游戏的编写 1. 初始化棋盘 I. test.cII. game.hIII. game.c 2.打印棋盘 I. test.cII. game.hIII. game.c 3.布置雷 I. test.cII. game.hIII. game.c 4.排查雷 I. test.cII. game.hIII. gam…

Java集合学习之Map

1.什么是Map Java里的Map接口是一个集合根接口&#xff0c;表示一个 键值对&#xff08;Key-Value&#xff09; 的映射。 简单来说就是键和值是一对的&#xff0c;每一个 Key都有唯一确定的 Value对应。 其中要求 键&#xff08;Key&#xff09; 唯一&#xff0c;因为是按照…

宏观经济研究:全国各省、地级市-社会融资规模增量数据(包含总额及8类明细)2013-2021年

数据来源&#xff1a;中国人民银行 时间跨度&#xff1a;2013-2021年&#xff0c;季度数据&#xff08;累计数&#xff09; 区域范围&#xff1a;全国31省份 数据字段&#xff1a; 31个省市社会融资规模增量数据&#xff0c;包含社会融资总额以及8类明细&#xff08;人民币…

12-Composer的配置与使用详解

1、自定义类与非类的自动加载与测试 # composer> php 包管理工具 &#xff0c;类似npm1.自己写的类&#xff0c;函数&#xff0c;接口&#xff0c;常量等全局成员&#xff0c;通过自动加载来实现按需加载 2.自己写的代码&#xff0c;有哪些依赖&#xff0c;用到了哪些外部成…

MySQL数据库调优————GROUP BY及DISTINCT优化

GROUP BY 三种处理GROUP BY的方式 松散索引扫描&#xff08;Loose Index Scan&#xff09;紧凑索引扫描&#xff08;Tight Index Scan&#xff09;临时表&#xff08;Temporary table&#xff09; 三种方式的性能一次递减 松散索引扫描 无需扫描满足条件的所有索引键即可返…

基于SSM,Spring, BootStrap 毕业设计管理系统的设计与实现

目录 一.前言介绍 二、主要技术 2.1 SSM框架介绍 2.2 MYSQL数据库 2.3 持久层框架MyBatis 2.4 前端框架BootStrap 三. 系统设计 3.1 系统架构设计 3.2 系统功能模块 3.2.1 学生模块 3.2.2 教师模块 3.2.3 管理员模块 四、数据库设计 4.1 数据分析 4.2 概念设计 …