黑马python-面向对象程序设计

1.定义类

class 类名:

代码

…..

注意:类名要满足标识符命名规则,同时遵循大驼峰命名习惯

2.self:

self指调用该函数的对象

3.创建对象

对象名=类()

4.添加获取对象属性

对象名.属性名=值

5._init_()方法:初始化对象

创建一个对象时默认调用,不需要手动调用

_init()_(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递过去

带参数的_init_()方法,可以进行初始化属性设置

6._str_()方法:

使用print输出对象的时候,默认打印对象的内存地址,如果类定义了_str_方法,那么就会打印从在这个方法中的return的属性

7._del_()方法

当删除对象时,python解释器默认调用_del_方法

8.经典类或旧式类

经典类:class 类名:

代码

旧式类:class 类名(object):

代码

9.继承:

多个类之间的所属关系,即子类默认继承父类的所有属性和方法

在Python中,所有类默认继承object类,object类是顶级类或基类;其他子类叫做派生类

单继承:一个子类只继承一个父类

多继承:一个子类同时继承多个父类

如果父类有同名属性和方法,优先使用第一个父类的

10.重写

如果子类和父类拥有同名属性和方法,子类创建对象调用属性和方法的时候,调用到的是子类里面的同名方法

11.print(子类.__mro__):输出子类继承的父类有哪些

12.super():调用父类方法

无参数:可以自动查找父类,调用顺序遵循__mro__()

带参数:super(当前类名,self).函数()

13.定义私有属性和方法

可以为实力属性和方法设置私有权限,即设置某个实例属性或实例方法不继承给子类

在属性和方法名前加两个下划线

14.获取和修改私有属性值

15.面向对象三大特性:

封装:

将属性和方法书写到类的里面的操作即为封装

封装可以为属性和方法添加私有权限

继承:

子类默认继承父类的所有属性和方法

子类可以重写父类属性和方法

多态:

传入不同的对象,产生不同的结果

16.多态:

定义:多态是一种使用对象的方式,子类重写父类方法,调用不同子类对象的相同父类方法,可以产生不同的执行结果

好处:调用灵活,有了多态,更容易编写出通用的代码,做出通用的编程,以适应需求的不断变化

实现步骤:

定义父类,提供公共方法

定义子类,并重写父类方法

传递子类对象给调用者,可以看到不同子类执行效果不同

17.类属性:

类属性就是类对象所拥有的属性,它被该类所有的实例对象所共有

类属性可以使用类对象或者实例对象访问

优点:

记录的某项数据始终保持一致时,则定义类属性

实例属性要求每个对象为其单独开辟一份内存空间来记录时间,而类属性为全类所共有,仅占用一份内存,更加节省内存空间

类属性只能通过类对象修改,不能通过实例对象修改,如果通过实例对象修改类属性,表示的是创建了一个实例属性

18.类方法

特点:需要用装饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为第一个参数

类方法使用场景:

当方法中需要使用类对象(如访问私有类属性等)时,定义类方法

类方法一般和类属性配合使用

4.静态方法:

特点:需要通过装饰器@staticmethod来进行修饰静态方法既不需要传递类对象也不需要传递实例对象(形参没有self/cls)

静态方法也能够通过实例对象和类对象去访问

使用场景:

当方法中既不需要使用实例对象,也不需要使用类对象时,定义静态方法

取消不需要的参数传递,有利于减少不必要的内存占用和性能消耗

5,异常:

当检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误提示,这就是所谓的异常

写法:

try:

可能出错的代码

except:

如果出现异常执行的代码

捕获指定异常类型:

try:

可能发生错误的代码

except 异常类型:

如果捕获到该异常类型执行的代码

注意:如果尝试执行的代码异常类型和要捕获的异常类型不一致,则无法捕获异常

一般try下方只放一行代码

捕获多个指定异常:

可以把要捕获的异

常类型的名字,放到except后,并使用元组的方式进行书写

捕获异常描述信息:

捕获所有异常

异常的else:

else表示的是如果没有异常要执行的代码

异常的finally

finally表示的是无论是否异常都要执行的代码,例如关闭文件

自定义异常:

在python中,抛出自定义异常的语法为raise异常类对象

#自定义异常类

 class 异常类类名(Exception):

代码

def  _str_(self):

return …

#抛出异常

raise 异常类名()

#捕获异常

except Exception…

6.模块

Python模块是一个Python文件,以.py结尾,包含了Python对象定义和Python语句

模块能定义函数,类和变量,模块里也能包含可执行的代码

导入模块写法:

import 模块名

from 模块名 import 功能名

from 模块名 import *

import 模块名 as 别名

from 模块名 import 功能名 as 别名

import:

from…import…:

from …import *

as定义别名:

定义模块

模块定位顺序:

当导入一个模块,Python解释器对模块位置的搜索顺序是:

1.当前目录

2.如果不在当前目录,Python则搜索在shell变量PYTHONPATH下的每个目录

3.如果都找不到,Python会查看默认路径。UNIX下,默认路径一般为/usr/local/lib/python

模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录

注意:

自己的文件名不要和已有模块名重复,否则导致模块功能无法使用

使用from模块名import功能的时候,如果功能名字重复,调用到的是最后定义或导入的功能

_all_:

如果一个模块文件中有_all_变量,当使用from xxx import *导入时,只能导入这个列表中的元素

7.包:

定义:

包将所有联系的模块组织在一起,即放到同一个文件夹下,并且在这个文件夹创建一个名字为__init__.py文件,这个文件就称为包

制作包:

[New]——[Python Package]——输入报名——OK——新建功能模块

注意:新建包后,包内部会自动创建__init__.py文件,这个文件控制着包的导入行为

导入包:

方法一:

import 包名.模块名

包名.模块名

方法二:

必须在_init_.py文件中添加_all_=[ ],控制允许导入的模块列表

from 包名 import *

模块名.目标

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

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

相关文章

Spring Aware接口:揭秘Bean生命周期中的“先知”角色与源码剖析

1. 引言 在Spring框架中,Bean的生命周期是一个复杂而精细的过程,涉及到Bean的创建、初始化、属性注入以及销毁等多个阶段。为了增强Bean与Spring容器之间的交互能力,Spring提供了一系列Aware接口,这些接口允许Bean在生命周期的不…

Hadoop+Spark大数据技术 实验8 Spark SQL结构化

9.2 创建DataFrame对象的方式 val dfUsers spark.read.load("/usr/local/spark/examples/src/main/resources/users.parquet") dfUsers: org.apache.spark.sql.DataFrame [name: string, favorite_color: string ... 1 more field] dfUsers.show() -----------…

Day7: LeedCode 454. 四数相加 II 383.赎金信 15.三数之和 18.四数之和

详细讲解移步: Day7: LeedCode 454. 四数相加 II 383.赎金信 15.三数之和 18.四数之和-CSDN博客 454. 四数相加 II 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i,…

李飞飞亲自撰文:大模型不存在主观感觉能力,多少亿参数都不行

近日&#xff0c;李飞飞连同斯坦福大学以人为本人工智能研究所 HAI 联合主任 John Etchemendy 教授联合撰写了一篇文章&#xff0c;文章对 AI 到底有没有感觉能力&#xff08;sentient&#xff09;进行了深入探讨。 「空间智能是人工智能拼图中的关键一环。」知名「AI 教母」李…

【数据结构】P1 数据结构是什么、算法怎样度量

1.1 基本概念与术语 数据&#xff1a; 数据是信息的载体&#xff0c;是所有能被计算机识别以及处理的符号。数据元素&#xff1a; 数据元素是数据基本单位&#xff0c;由若干 数据项 组成&#xff0c;数据项是构成数据元素最小的单位。 e . g . e.g. e.g. 数据元素如一条学生记…

[Python] VS python未能启动调试适配器

原因&#xff1a;调试适配器版本与python版本不一致导致无法启动&#xff0c;通常是选用的适配器的版本过新。 作者&#xff1a;东京微风吹凉 https://www.bilibili.com/read/cv12027862/ 出处&#xff1a;bilibili 尝试&#xff1a;更换环境为 Py 3.11&#xff08;64bit&…

Leetcode 2028

思路&#xff1a;1-6之间的的n个数组合起来要变成sum_t mean*(rolls.size()n) - sum(rolls) ; 那么可以先假设每个数都是sum_t / n 其中这个数必须要在1 - 6 之间否者无法分配。 然后可以得出n * (sum_t / n ) < sum ; 需要对余数mod进行调整&#xff0c;为了减少调整的次…

接口测试及接口测试常用的工具详解

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 首先&#xff0c;什么是接口呢&#xff1f; 接口一般来说有两种&#xff0c;一种是程序内部的接口&#xff0c;一种是系统对外的接口。 系统对外的接口&#xff1a;比如你要从别的网站或服务器上获取资源或信息…

深入了解 CSS 预处理器 Sass

今天我们来深入探讨一下 CSS 预处理器 Sass。我们将学习什么是 Sass,如何使用它,以及它是如何工作的。 什么是 Sass? Sass 是 syntactically awesome style sheets 的缩写,是一种 CSS 预处理器。它是 CSS 的扩展,为基础 CSS 增加了更多的功能和优雅。普通的 CSS 代码很容…

初学java java script是什么!

java script是什么&#xff01; JavaScript是世界上最流行的语言之一&#xff0c;是一种运行在客户端的脚本语言(Script是脚本的意思) 脚本语言:不需要编译&#xff0c;运行过程中由js 解释器(js 引擎)逐行莱进行解释并执行 现在也可以基于 Nodejs 技术进行服务器端编程 ja…

sklearn监督学习--k近邻算法

sklearn监督学习 一、分类与回归二、泛化、过拟合与欠拟合三、k近邻算法四、分析KNeighborsClassifier五、k近邻算法用于回归优点、缺点和参数 一、分类与回归 监督学习是最常用也是最成功的机器学习类型之一。监督机器学习问题主要有两种&#xff0c;分别叫做分类与回归。分类…

IDEA项目通过 tomcat运行报错: 404 请求的资源不可用

SpringBootVue项目 IDEA运行 Tomcat&#xff0c;自动打开网页报错 HTTP状态 404 - 未找到 类型 状态报告 消息 请求的资源[/WarehouseManagerApi_war/]不可用 描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。 Apache Tomcat/9.0.89 但是运行访问 …

c++参数 使用笔记

定义函数&#xff1a; 传两个参数&#xff0c;一个引用&#xff0c;一个返回 public:ThpRecord getLatestRecord(QVector<int>& ids); };ThpRecord faceinit::getLatestRecord(QVector<int>& ids) {ThpRecord entity;// 创建一个 SQL 查询对象QSqlQuery …

【Unity】如何在独立thread中调用协程

【背景】 需要在脚本的分线程中调用协程,结果发现协程必须由主线程调用,不然报错。 但是协程动作的触发点却放在分支thread中触发最理想。如何能够绕过这一限制,使得分支线程满足条件后能直接成功发起协程呢? 【分析】 无法直接start协程那就只能用间接的方法吊起协程。…

【接口测试_04课_Jsonpath断言、接口关联及加密处理】

一、Jasonpath的应用 JsonPath工具网站&#xff1a;JSONPath解析器 - 一个工具箱 - 好用的在线工具都在这里&#xff01; 1、JSONPath的手写与获取 手写JSONPath 1、 $ &#xff08;英文美元符号&#xff09;代表外层的{} . &#xff08;英文句号&#xff09;表示当前…

卷积神经网络-奥特曼识别

数据集 四种奥特曼图片_数据集-飞桨AI Studio星河社区 (baidu.com) 中间的隐藏层 已经使用参数的空间 Conv2D卷积层 ReLU激活层 MaxPool2D最大池化层 AdaptiveAvgPool2D自适应的平均池化 Linear全链接层 Dropout放置过拟合&#xff0c;随机丢弃神经元 -----------------…

echarts快速入门

之前只看过&#xff0c;没写过&#xff0c;来了个新需求了解下echarts功能 官网&#xff1a;https://echarts.apache.org/handbook/zh/get-started 官方参数文档&#xff1a;https://echarts.apache.org/zh/option.html#title 其实大部分问题&#xff0c;去官方参数文档里面都…

【项目教程】FFmpeg+SDL2实现视频播放器

一、前言 学习ffmpeg和sdl&#xff0c;并编写一个视频播放器&#xff0c;是一个很好的音视频开发项目。 虽然关于视频播放器的原理已经有很多人在博客中进行了讲解&#xff0c;但是很多人不提供视频和代码&#xff0c;这也是我写这篇博客的主要原因。 二、在视频播放器中&am…

机器学习 - toad 0.10 和 0.13 之间的区别

Toad 是一个用于机器学习建模、预处理和特征工程的 Python 库。以下是 Toad 库版本 0.10 和 0.13 之间的主要区别&#xff1a; Toad 0.10 初始功能: 版本 0.10 可能包含了 Toad 的基础功能&#xff0c;如数据预处理、特征选择和模型评估。特征选择: 提供了基本的特征选择方法…

【组合数学 放球问题 虚拟点 小于等于转小于】1621. 大小为 K 的不重叠线段的数目

本文涉及知识点 放球问题 组合数学汇总 本题难道分&#xff1a;2198 LeetCode1621. 大小为 K 的不重叠线段的数目 给你一维空间的 n 个点&#xff0c;其中第 i 个点&#xff08;编号从 0 到 n-1&#xff09;位于 x i 处&#xff0c;请你找到 恰好 k 个不重叠 线段且每个线段…