【python基础学习10课_面向对象、封装、继承、多态】

一、类与对象

1、类的定义

在类的里面,称之为方法。
在类的外面,称之为函数。类:人类,一个族群,是一个群体类的语法规则:class 自定义的类名():属性 -- 变量方法 -- 函数类,首字母大写,拼接的英文不需要隔开,但是每个单词的首字母都需要大写
方法/函数,首字母小写,拼接的英文需要用下划线隔开
1)类里面定义的变量、方法,不能在类的外面引用

 2)通过实例化对象,来调用类里面的变量和函数
类名A +() 表示实例化一个对象,对象要有个定义的名字B所以  对象B = 类名A ()  表示,对A类,示例化了一个个体对象B。也就是对 人类,实例化了一个 对象 叫小王。小王具有人类的属性特征对学生群体类,实例化了 一个对象,叫大学生,大学生具有学生群体类的属性和特征实例化  就是  初始化

 

3)同一个类的对象,都是一样的基本属性
4)通过变量的重定义,来进行对象属性的修改

初始化的时候,不同的对象,属性一致。但是对象有了属性的重定义后,重定义的属性是该对象自己自定义的属性。手机刚出厂,基本设置一样,但是后面每个人都对自己的手机进行自定义,手机就不一样了,但也都是在基本属性之上的改变。

 

对象中的属性和方法都是没有相互影响的,对C对象的属性重定义,不影响B对象的

2、类的应用

1)构造方法
1、在Python中,构造方法(也称为初始化方法)是一个特殊的方法,用于在创建类的实例时初始化该实例。构造方法的语法规则如下:构造方法的名称必须是 _ _init_ _  (前后都是双下划线,表示这是一个特殊方法)正常显示会连上,看起来是:__init__构造方法至少需要有一个参数,通常是 self,它指向新创建的实例本身。self 参数必须是构造方法的第一个参数。构造方法可以有任何数量的其他参数,这些参数在创建实例时提供,用于初始化实例的属性。2、举例:
class MyClass:def __init__(self, value1, value2):self.attribute1 = value1 self.attribute2 = value2# 创建 MyClass 的一个实例,传递两个参数给构造方法
my_instance = MyClass(10, 20)3、解析上面的例子:
class: 定义类的关键字。
MyClass: 类的名称,可以是任何有效的Python标识符。
__init__: 构造方法的名称,双下划线表示这是一个特殊方法。
self: 指向类实例的引用,在类的方法中始终作为第一个参数传递。
value1, value2: 构造方法的参数,用于接收传递给实例化时的值。
self.attribute1, self.attribute2: 实例属性,使用 self 关键字来设置实例的属性。
在创建类的实例时,Python会自动调用构造方法。构造方法的目的是为了能够定制每个实例的创建过程,为其提供初始状态。self表示当前对象,传入进来的属性,需要赋值给当前对象的属性
 
self表示当前对象,给这个对象传入进来的属性,需要赋值给当前对象的属性

2)构造方法的应用

3、类中的属性

1)类属性的定义
实例属性:实例化的对象的属性定义在构造方法中的属性公有实例属性:常规属性私有实例属性:双下划线开头,只能够在自己的类中进行调用私有属性,是防止被随意的乱改语法规则:
对象名称.属性名称类的内部使用:
self.属性名称--self表示当前对象
 2)调用公共属性

属性错误:'Person'对象没有属性'self'

正确,不带self

 3)调用私有属性
3.1)在类的外面直接调用--报错

属性错误:'Person'对象没有属性'__sex'

3.2)在类的外面,通过类的方法执行在类的里面的私有属性--可以调用

在类的里面,是不区分公有和私有的属性,在类的方法里面可以直接操作类的所有属性

 

3.3)私有属性在类的外面被重定义,就不再是私有的了

重定义的属性就是该对象自己自定义的属性,属于该对象,重定义后的属性不再是原先的属性

 4、类中的方法

1)类方法的定义
方法与函数的主要区别:1)关联:方法与特定的类实例相关联,而函数是独立的。
2)调用方式:方法通常通过对象调用,如 object.method(),而函数直接通过其名称调用,如 function()。
3)参数:方法至少有一个参数 self,它是对当前对象的引用,而函数没有这样的隐含参数。
4)作用域:方法可以访问其所属对象的属性和其他方法,而函数只能访问全局作用域和其参数中传递的值。

类里面的叫方法,类外面的叫函数。

2)调用公共方法

2)调用私有方法

私有方法不能直接调用

通过调用公共方法来调用私有方法

5、类的封装

1)封装的定义
封装:
1、设置一个方法,可以进行对私有属性的传值
2、可以把私有属性返回,让在类的外面可以操作私有属性set和get:可以通过定义方法来访问和修改类的属性,从而提供对属性访问的更细粒度的控制。
 2)封装的实践

6、类的继承

继承:节约代码的维护量,在原有的基础上面进行迭代维护语法规则:
class 自定义类名(父类):子类独有的代码块在实例化之后,可以调用子类的方法和属性,也可以调用父类的方法和属性
 1)单继承

 1.1)想使用父类的私有属性,就得对父类进行封装。

 1.2)想使用父类的私有方法,就得在父类里增加一个调用私有方法的公共方法。

 

2)继承的传递性

子类的子类,可以调用父类的属性和方法

3)方法的重构
方法的重构,只运行自己的,不运行父级的方法

 

 4)多继承
"""
语法规则:
class 自定义类名(父类1, 父类2):其余的内容和之前的没什么区别
"""

4.1)两个父类,都有同名的方法--方法的重构

执行:子类(近父类,远父类)的近的父类的方法

4.2)两个父类和自己,都有同名的方法--方法的重构

自己有的重构的方法,就只执行自己的。如果自己没有这个重构的方法,谁离的近就执行谁的。

7、多态 


多态:定一个规则,按照这个规则向接口提供对应的不同的对象。然后根据提供的不同对象,去执行不同对象中的方法传对象,调用对象里面的属性和方法

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在有/没有备份的情况下恢复华为上已删除的视频?6 个推荐选项

“我不小心删除了华为手机上的一堆视频。我怎样才能把它们找回来?我在谷歌上也找不到它们”。——来自知乎 在我们日常生活的喧嚣中,意外时有发生。无论是由于华为手机上的无意删除、恢复出厂设置、病毒感染、数据损坏还是系统故障,这些视频…

基于单片机的机动车智能远光灯系统设计

目 录 摘 要 I Abstract II 引 言 1 1 主要研究内容及总体设计方案 3 1.1 主要研究内容 3 1.2 系统总体方案选择 3 1.3 系统功能的确定 4 2 硬件电路的设计 5 2.1 单片机控制模块设计 5 2.2 液晶显示模块电路设计 7 2.3 远近灯光电路设计 9 2.4 按键电路设计 9 2.5 超声波电路…

【QA-SYSTEMS】CANTATA-解决Jenkins中build Cantata报错

【更多软件使用问题请点击亿道电子官方网站查询】 1、 文档目标 解决Jenkins中build Cantata测试项目报找不到license server的错误。 2、 问题场景 在Jenkins中build Cantata测试项目,报错“Failed to figure out the license server correctly”。 3、软硬件环…

vue+Nodejs+Koa搭建前后端系统(九)-- 上传图片

web2.0的到来使网页世界正式进入了寒武纪,各式各样的多媒体资源屡见不鲜,上传资源变得刻不容缓! 前言 本文是在该系列的基础上,针对前后端代码的修改。 准备 HTTP上传图片时Content-Type值常见的有2种:application…

java集合(泛型数据结构)

1.泛型 1.1泛型概述 泛型的介绍 泛型是JDK5中引入的特性&#xff0c;它提供了编译时类型安全检测机制 泛型的好处 把运行时期的问题提前到了编译期间 避免了强制类型转换 泛型的定义格式 <类型>: 指定一种类型的格式.尖括号里面可以任意书写,一般只写一个字母.例如: …

Vue+SpringBoot打造桃花峪滑雪场租赁系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 游客服务2.2 雪场管理 三、数据库设计3.1 教练表3.2 教练聘请表3.3 押金规则表3.4 器材表3.5 滑雪场表3.7 售票表3.8 器材损坏表 四、系统展示五、核心代码5.1 查询教练5.2 教练聘请5.3 查询滑雪场5.4 滑雪场预定5.5 新…

Python接口自动化之cookie、session应用!

以下介绍cookie、session原理及在接口自动化中的应用。 HTTP 协议是一种无状态协议&#xff0c;即每次服务端接收到客户端的请求时&#xff0c;都是一个全新的请求&#xff0c;服务器并不知道客户端的历史请求记录&#xff1b;Session 和 Cookie 的主要目的就是为了弥补 HTTP 的…

Linux之线程概念

目录 一、细粒度划分 1、堆区细粒度划分 2、物理内存和可执行程序细粒度划分 3、虚拟地址到物理地址的转化 二、线程的概念 1、基本概念 2、线程的优点 3、线程的缺点 4、线程异常 5、线程用途 三、Linux下的进程和线程 一、细粒度划分 1、堆区细粒度划分 在语言…

为什么我建议你2024年一定要入局鸿蒙?

自去年发布现象级“爆款”手机Mate 60后&#xff0c;华为就备受关注。小编作为一枚程序员&#xff0c;关注的重心更偏向于技术。华为手机搭载的国产自研的鸿蒙操作系统&#xff08;HarmonyOS&#xff09;&#xff0c;已经成为一个业界的里程碑&#xff0c;是我国国产技术自主化…

企业如何实现跨部门和员工之间的高效沟通协同?

在当今高度竞争和信息化的商业环境中&#xff0c;企业内部各部门和员工之间的沟通协同效率直接影响到企业的整体运营效果。那么&#xff0c;企业如何实现各部门和员工之间的高效沟通协同呢&#xff1f; 一、建立有效沟通机制与明确部门职责 要实现各部门和员工间的高效协同&…

【vue3之组合式API及其新特性】

组合式API及其新特性 一、setup1.写法2.如何访问3.语法糖4.同步返回对象 二、reactive()和ref()1.reactive()2.ref() 三、computed四、watch函数1.侦听单个数据2.侦听多个数据3. immediate4. deep5.精确侦听对象的某个属性 五、生命周期函数六、组件通信1.父传子2. 子传父 七、…

K8s Pod控制器

目录 前言&#xff1a; 1.Deployment 查看控制器配置 查看历史版本 2.SatefulSet 安装CoreDNS&#xff0c;仅二进制部署环境需要安装CoreDNS 方法一 方法二 查看statefulset的定义 清单定义StatefulSet 创建pv 定义PV 创建statefulset 滚动更新 总结 扩展伸缩…