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

news/2024/4/16 16:04:51/文章来源:https://blog.csdn.net/weixin_42333261/article/details/136476300

一、类与对象

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.luyixian.cn/news_show_996709.aspx

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

相关文章

学习clickhouse 集群搭建和分布式存储

为什么要用集群 使用集群的主要原因是为了提高系统的可扩展性、可用性和容错性。 可扩展性:当单个节点无法处理增加的负载时,可以通过添加更多的节点到集群来增加处理能力。这使得系统可以处理更大的数据量和更高的查询负载。可用性:在集群…

Linux基础——进程控制

1. 进程创建 在这之前我们曾了解过进程创建(详见进程初识(二)),我们在这里对fork函数做一些补充 其实对于父子进程来说,若是有一方试图修改数据时,会向物理内存中申请一份新空间,并…

每日学习总结20240306

每日总结 20240306 1. 断言测试判断 #include <iostream> #include <assert.h> #include <cassert> #include <stdio.h>#define STR_OK "[\x1b[1;32m OK \x1b[0m]" #define STR_FAIL "[\x1b[1;31mFAIL\x1b[0m]"…

威步安全技术保护铁路免受网络威胁

IoW的TrainCAS列车碰撞预警系统保护铁路列车免受网络攻击。TrainCAS系统内置的高端技术及其被非法利用的风险&#xff0c;让安全和知识产权保护成为公司的首要任务。TrainCAS软件及其轨道图通过CodeMeter AxProtector和Core API工具的结合得到保护&#xff0c;有效防止未授权使…

Android Split APK是什么

Android Split APK是一项应用程序分发和安装的技术&#xff0c;可以将大型应用程序拆分为多个较小的模块&#xff0c;以便用户可以选择性地下载和安装所需的模块&#xff0c;而无需一次性下载整个应用程序。这种技术旨在提高用户体验、减少下载时间和节省存储空间。 Android S…

【数据结构】矩阵的压缩存储

矩阵的压缩存储 5.1 普通矩阵的存储 用二维数组存储 分为行优先和列优先&#xff1a; 行优先&#xff1a;优先存放一行的数据。 列优先&#xff1a;优先存放一列的数据。 注意下标是从0还是1开始的&#xff01; 5.2 对称矩阵的存储 对称矩阵定义 若n阶方阵中任意一个元素 a i …

VR全景数字工厂,制造业企业线上营销新助手

VR全景技术逐渐渗透到各行各业&#xff0c;其中&#xff0c;很多实体工厂的线上营销宣传也借助720云VR全景技术也迎来了新的变革。 一、VR全景技术的独特魅力 VR全景技术是一种基于虚拟现实技术的全新视觉呈现方式&#xff0c;能够为用户带来身临其境的沉浸式体验。通过VR全景…

Redis基本使用和基础知识整理

Redis是做什么的&#xff1f; Redis是一个开源&#xff0c;内存存储的数据结构服务器&#xff0c;可用作数据库&#xff0c;高速缓存和消息队列。Redis将数据储存在内存当中 内存的特点 易失性&#xff08;在断电之后数据就没有了&#xff09;进行读取数据等IO操作的速度要比…

【异常处理】BadSqlGrammarException低级SQL语法异常

报错 org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use …

苹果曝出两个 iOS 系统 0-Day 漏洞

最近&#xff0c;苹果公司发布了紧急安全更新&#xff0c;解决了两个 iOS 零日漏洞。这些漏洞存在于 iOS 内核&#xff08;CVE-2024-23225&#xff09;和 RTKit&#xff08;CVE-2024-23296&#xff09;中&#xff0c;威胁攻击者可利用其绕过内核内存保护&#xff0c;这就给了具…

NLP:spacy库安装与zh_core_web_sm配置

到公司来第一个项目竟然是偏文本信息抽取与结构化的&#xff0c;&#xff08;也太高看我了┭┮﹏┭┮&#xff09; 反正给机会了就上吧&#xff0c;我就一臭实习的&#xff0c;怕个啥。配置了两天的环境&#xff0c;也踩了不少坑&#xff0c;我把我的经历给大家分享一下&#…

什么是B+树,和B树有什么不同?

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

鸿蒙App动画、弹窗

动画 属性动画 https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/ts-animatorproperty-0000001478181445-V3 组件的某些通用属性变化时&#xff0c;可以通过属性动画实现渐变过渡效果&#xff0c;提升用户体验。支持的属性包括width、height、backg…

vb.net获取Windows主题颜色、深色模式窗体,实时响应

先上效果图 可直接跳到完整代码 目录 先上效果图 开始教学 响应用户的更改 API讲解 读取深浅模式、主题颜色、十六进制颜色转换 完整代码 如果大家留意资源管理器的“文件”菜单的话就会发现它的底色就是你设置的主题色&#xff0c;在更改Windows颜色模式时&#xff0c;…

泰迪智能科技2024全国高校大数据与人工智能师资研修班即将开班

为推动各院校完善专业建设&#xff0c;解决专业教学中行业案例缺失和实战能力不足等相关痛点问题&#xff0c;泰迪科技基于十余年深耕数据智能产业实践经验&#xff0c;特推出全国高校大数据与人工智能师资研修班&#xff0c;每年在全国范围内滚动开展&#xff0c;截止目前已在…

新书速览|Photoshop+CorelDRAW商业广告设计入门到精通:视频教学版

8章实例剖析商业案例&#xff0c;帮你提升设计效率。商业实战案例&#xff0c;真正掌握设计技能&#xff01; 本书内容 《PhotoshopCorelDRAW商业广告设计入门到精通&#xff1a;视频教学版》以创作精美、类型多样的案例&#xff0c;全面地讲解Photoshop与CorelDRAW软件相结合…

Android SDK2 (实操三个小目标)

书接上回&#xff1a;Android SDK 1&#xff08;概览&#xff09;-CSDN博客 今天讲讲三个实际练手内容&#xff0c;用的是瑞星微的sdk。 1 实操编译Android.bp 首先还是感叹下&#xff0c;现在的系统真的越搞越复杂&#xff0c;最早只有gcc&#xff0c;后面多了make&#xf…

web3时事粥报

比特币正成为更具有吸引力的通胀对冲工具 在通胀的宏观经济浪潮中&#xff0c;比特币正逐渐崭露头角&#xff0c;成为那些渴望多元化投资组合的投资者眼中的璀璨明星。Kooner 预测&#xff0c;2024年&#xff0c;各种宏观经济挑战可能进一步提升比特币、黄金和白银等资产的避险…

VSCode 隐藏侧边栏文件或文件夹

开发时有些文件根部就会动&#xff0c;可能是运行的环境或者缓存&#xff0c;可能是其他的文件。 但是又不能删除&#xff0c;影响开发的观感&#xff0c;那么怎么在侧边栏栏隐藏文件呢 搜索的时候想要加快速度&#xff0c;怎么屏蔽某些文件呢 隐藏侧栏显示文件或屏蔽搜索范围…

代码随想录刷题笔记 DAY 42 | 背包问题 - 二维 | 背包问题 - 一维 | 分割等和子集 No.416

文章目录 Day 4201. 背包问题 - 二维<1> 01 背包问题<2> 动态规划优化 02. 背包问题 - 一维03. 分割等和子集&#xff08;No. 416&#xff09;<1> 题目<2> 笔记<3> 代码 Day 42 01. 背包问题 - 二维 <1> 01 背包问题 有 n 个物品和最多…