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

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&#xff0…...

聊聊探索式测试与敏捷实践

这是鼎叔的第五十二篇原创文章。行业大牛和刚毕业的小白,都可以进来聊聊。欢迎关注本专栏和微信公众号《敏捷测试转型》,大量原创思考文章陆续推出。探索式测试在敏捷测试象限中处于右上角,即面向业务且评价产品,这篇补充一下探索…...

社区宠物诊所管理系统

目录第一章概述 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配置概要第一部分&#xff1a;全局块第二部分&#xff1a;events 块&#xff1a;第三部分&#xff1a;http块&#xff1a;Nginx Nginx是一个高性能的http和反向代理服务器&#xff0…...

2049. 统计最高分的节点数目

2049. 统计最高分的节点数目题目算法设计&#xff1a;深度优先搜索题目 传送门&#xff1a;https://leetcode.cn/problems/count-nodes-with-the-highest-score/ 算法设计&#xff1a;深度优先搜索 这题的核心是计算分数。 一个节点的分数 左子树节点数 右子树节点数 除自…...

Docker 架构简介

Docker 架构 Docker 包括三个基本概念: 镜像&#xff08;Image&#xff09;&#xff1a;Docker 镜像&#xff08;Image&#xff09;&#xff0c;就相当于是一个 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开发 前言&#xff1a; 此文为玄子&#xff0c;复习BCSP一二期后整理的文章&#x…...

利用React实现多个场景下的鼠标跟随框提示框

前言 鼠标跟随框的作用如下图所示&#xff0c;可以在前端页面上&#xff0c;为我们后续的鼠标操作进行提示说明&#xff0c;提升用户的体验。本文将通过多种方式去实现&#xff0c;从而满足不同场景下的需求。 实现原理 实现鼠标跟随框的原理很简单&#xff0c;就是监听鼠标在…...

【安全知识】——如何绕过cdn获取真实ip

作者名&#xff1a;白昼安全主页面链接&#xff1a; 主页传送门创作初心&#xff1a; 以后赚大钱座右铭&#xff1a; 不要让时代的悲哀成为你的悲哀专研方向&#xff1a; web安全&#xff0c;后渗透技术每日鸡汤&#xff1a; 现在的样子是你想要的吗&#xff1f;cdn简单来说就是…...

JavaScript内存泄露和垃圾回收机制

1、是什么&#xff1f;内存泄露&#xff08;Memory leak&#xff09;是在计算机科学中&#xff0c;由于疏忽或错误造成程序未能释放已经不再使用的内存。并非指内存在物理上的消失&#xff0c;而是应用程序分配某段内存后&#xff0c;由于设计错误&#xff0c;导致在释放该段内…...

Kubernetes02:知识图谱

Kubernetes01&#xff1a;知识图谱 MESOS APACHE 分布式资源管理框架 2019-5 Twitter 》 Kubernetes Docker Swarm 2019-07 阿里云宣布 Docker Swarm 剔除 Kubernetes Google 10年容器化基础架构 borg Go语言 Borg 特点 轻量级&#xff1a;消耗资源小 开源 弹性伸缩 负载均…...

nginx-服务器banner泄漏风险

http { server_tokens off; # 隐藏Nginx版本号 .... }...

GCC 同名符号冲突解决办法

一、绪论 作为 C/C 的开发者&#xff0c;大多数都会清楚课本上动态库以及静态库的优缺点&#xff0c;在教科书上谈及到动态库的一个优点是可以节约磁盘和内存的空间&#xff0c;多个可执行程序通过动态库加载的方式共用一段代码段 &#xff1b;而时至今日&#xff0c;再看看上…...

下一代视频编码技术2023

下一代视频编码技术 下面将从这两个角度来介绍华为云视频在下一代视频编码技术上的一些工作。这些技术得益于华为2012 媒体技术院全力支持。 2.1 下一代视频编码标准技术 从上图可以看出&#xff0c;下一代的视频编码标准大概分为三个阵营或者三个类型&#xff1a; 国际标准…...

最新最全中小微企业研究数据:海量创业公司信息与获取投资信息(1985-2021年)

一、企业获取投资名单&资方信息 数据来源&#xff1a;搜企网、企查查、天眼查 时间跨度&#xff1a;1985年8月-2021年9月 区域范围&#xff1a;全国范围 数据字段&#xff1a;企业名称、时间、获得投资金额以及投资方信息 部分数据&#xff1a; DateCompany_nameUnit…...

springboot数据源浅析

DataSourceAutoConfiguration分析 SpringBoot有一个自动配置DataSourceAutoConfiguration 为数据源配置 /META-INF/spring.factories文件找到DataSourceAutoConfiguration配置类 一、先来看下DataSourceAutoConfiguration配置类生效的时机&#xff0c;观察源码发现 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音乐播放器实现框架&#xff0c;Qt鼠标事件&#xff0c;网络编程&#xff0c;QSqlite,Json解析&#xff0c;HTTP请求等框架搭建UI设计mp3.hmp3.cpp隐藏窗口标题 最大化 最小化 关闭框架搭建 .pro添加 # 网络 添加多媒体 数据库 QT network multimedia sql添加头…...

硬件学习 软件Cadence day04 PCB 封装绘制

1.文章内容&#xff1a; 1. 贴片式电容 PCB 封装绘制 &#xff08;型号 c0603 &#xff09; 2. 贴片式电阻 PCB 封装绘制 &#xff08;型号 r0603 &#xff09; 3. 安规式电容 PCB 封装绘制 &#xff08;这个就是 有一个电容&#xff0c;插入一个搞好的孔里面 …...

【Java】yield()和join()区别

一、java 线程调度的背景 java虚拟机要求在多线程中实现 preemptive和priority-based调度&#xff0c;这意味着java中每一个线程被分配了特定的优先级&#xff0c;正整数在定义好的范围内不断减。优先级可以通过开发者改变但是java虚拟机从不改变线程的优先级&#xff0c;即使…...

【MySQL】Java连接MySQL数据库(封装版只需会MySQL)

一、准备普通项目如果创建的是普通的Java项目&#xff0c;我们需要去maven仓库下载jdbc驱动包然导入项目中就能使用&#xff0c;具体步骤详见MySQL数据库之Java中如何使用数据库【JDBC编程】maven项目如果创建的项目是maven项目&#xff0c;我们只需在pom.xml文件里引入一组依赖…...

【java基础】运算符

运算符 operator 运算符优先级 Operators 操作员Precedence 优先级postfix 后缀expr expr--unary 一元的expr --expr expr -expr ~ !multiplicative 〔数〕乘法的 / %additive 添加剂 -shift 移动<< >> >>>relational 关系的< > < > insta…...

带噪学习-概述

在实际应用的时候&#xff0c;我们的样本不会是完全干净的&#xff0c;即存在噪声样本。那使用存在噪声的样本时&#xff0c;我们如何更有效的进行模型学习呢&#xff1f;Label Dependent Nose样本选择&#xff08;Sample Selection&#xff09;第一种很直接的想法&#xff0c;…...

Scratch少儿编程案例-多彩打地鼠

专栏分享 点击跳转=>Unity3D特效百例点击跳转=>案例项目实战源码点击跳转=>游戏脚本-辅助自动化点击跳转=>Android控件全解手册点击跳转=>Scratch编程案例👉关于作者...

为什么拔掉计算机网线还能ping通127.0.0.1?

前言 当我们在计算机上拔掉网线之后&#xff0c;发现我们仍然可以使用ping命令来ping通本机的IP地址127.0.0.1&#xff0c;这让很多人感到困惑&#xff0c;认为拔掉网线后计算机就无法与外界通信了&#xff0c;为什么还能ping通本机的IP地址呢&#xff1f; 本文的目的是通过对…...

Android kotlin 内、外部存储根目录及测试(可以实现仿微信未读消息数提示数字)

<<返回总目录 文章目录 一、内部存储与外部存储三、外部存储的写读测试(可以实现仿微信未读消息数提示数字)一、内部存储与外部存储 所有Android设备都有两个文件存储区域:内部存储空间(internal Storage)和外部存储空间(external Storage)。所以,Android系统从逻…...

Android 7.0 OTA升级(高通)

文章目录1. Full OTA 方式升级介绍1.1 Full OTA 制作第一步&#xff1a;生成 msm89xx-target_files-eng.XXX.zip1.2 Full OTA 制作第二步&#xff1a;Modem 等非 HLOS 加入升级包的方法1.3 Full OTA 制作第三步&#xff1a;生成 update.zip 升级包2. Incremental OTA 方式升级介…...

工作负载之DeployMent

DeployMent 无状态工作负载&#xff08;Deployment&#xff09;&#xff1a;即kubernetes中的“Deployment”&#xff0c;无状态工作负载支持弹性伸缩与滚动升级&#xff0c;适用于实例完全独立、功能相同的场景&#xff0c;如&#xff1a;nginx、wordpress等。 也是公司中应…...

来一个网站谢谢了/广州网站优化页面

全文共3564字&#xff0c;预计学习时长11分钟构造函数(constructor)和观察者模式&#xff0c;谁略胜一筹呢&#xff1f;这要看情况。谁属于谁&#xff1f;通常我们使用构造函数(constructor)参数连接两个组件。例如&#xff0c;在构造图形表面时可以非常清楚地看到此过程。比如…...

学校网站资源建设方案/一站式软文发布推广平台

肢体语言&#xff08;body language&#xff09;又称身体语言&#xff0c;是指通过头、眼、颈、手、肘、臂、身、胯、足等人体部位的协调活动来传达人物的思想&#xff0c;形象地借以表情达意的一种沟通方式。肢体语言也是演员的必修课程&#xff0c;不同角色不同情况下的肢体语…...

长沙做网站的公司/做一个网站需要多少钱大概

一次做新闻系统时因为要固定新闻页图片的大小并且要加链接&#xff0c;因此就去网上找&#xff0c;结果还真找到了&#xff0c;首页把新页实现代码贴出来&#xff1a; $as_message preg_replace(\/<img.src\"?(.\.(jpg|gif|bmp|bnp|png))\"?.>/i\, "&l…...

wordpress 324/十大免费最亏的免费app

1、创建shell脚本文件 创建文件&#xff0c;为文件添加可执行权限 chmod x file格式&#xff1a;在文件的第一行指定所使用的shell#!/bin/bash注释&#xff1a;#开头的命令&#xff08;首行的 #!/bin/bash 除外&#xff09;显示消息&#xff1a;echo命令默认情况下不需要加引号…...

wordpress twenty thirteen/快手seo软件下载

环境Centos 6.6Mysql 5.7安装如果系统已安装&#xff0c;请先卸载&#xff01;关闭Selinuxsetenforce 0 (临时关闭) 修改/etc/selinux/config(永久关闭)将SELINUXenforcing改为SELINUXdisabled1. 下载依赖包和mysql的安装包官网下载解压:wget http://cdn.mysql.com/archives/my…...

常州网站建设机构/常见的网络推广方法

获取或设置属性节点的值 操作标签属性 getAttribute(attrName) 作用 &#xff1a; 获取指定属性的值 attrName : 属性名setAttribute(attrName,value) 作用 &#xff1a;设置属性和对应的值 attrName : 属性名 value &#xff1a;属性值removeAttribute(attrName) 作用 &…...