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

黑马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 *

模块名.目标

相关文章:

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

1.定义类 class 类名: 代码 ….. 注意:类名要满足标识符命名规则,同时遵循大驼峰命名习惯 2.self: self指调用该函数的对象 3.创建对象 对象名类() 4.添加获取对象属性 对象名.属性名值 5._init_()方法&…...

pod容器基础概念

一 Pod基础概念: ①Pod是kubernetes中最小的资源管理组件,Pod也是最小化运行容器化应用的资源对象。一个 Pod代表着集群中运行的一个进程。一个pod包含一个或多个容器。如:应用容器/业务容器(淘 宝、京东、拼多多后台&#xff…...

AI日报:百度发布文心大模型学习机;Open-Sora 1.1可生成21秒视频;Canva可以自动剪辑视频了;超牛ComfyUI节点AnyNode来了

欢迎来到【AI日报】栏目!这里是你每天探索人工智能世界的指南,每天我们为你呈现AI领域的热点内容,聚焦开发者,助你洞悉技术趋势、了解创新AI产品应用。 新鲜AI产品点击了解:AIbase - 智能匹配最适合您的AI产品和网站 1、百度文心…...

VUE3+TS+elementplus+Django+MySQL实现从数据库读取数据,显示在前端界面上

一、前言 前面通过VUE3和elementplus创建了一个table,VUE3TSelementplus创建table,纯前端的table,以及使用VUE3TSelementplus创建一个增加按钮,使用前端的静态数据,显示在表格中。今天通过从后端获取数据来显示在表格…...

用c++做贪吃蛇

由于蛇是由多块蛇身组成的,机构体数组或者链表来存储蛇 蛇在运行过程中,如果吃了食物,那么这块食物就可以看作是新的蛇头了, 数组存储 存储新蛇身,在数组的第一个位置插入一个元素。 链表 插入和删除元素效率很高&…...

【UE5.1 角色练习】08-传送技能

前言 在上一篇(【UE5.1 角色练习】07-AOE技能)基础上继续实现人物通过鼠标点击然后传送技能的功能。 效果 步骤 1. 首先需要显示鼠标光标,我们可以在玩家控制器中勾选“显示鼠标光标” 2. 在项目设置中添加一个操作映射,设置按…...

力扣283题:移动零(快慢指针)

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2: 输入: nums [0] 输出: [0…...

Java面试精粹:高级问题与解答集锦(一)

Java 高级面试问题及答案 问题1:Java中如何实现多线程,以及有哪些线程同步机制? 答案: Java实现多线程主要有两种方式:继承 Thread 类和实现 Runnable 接口。通过继承 Thread 类,可以重写 run() 方法来定…...

Yourpassword does not satisfy the current policyrequirements

mysql 新增数据库用户失败 解决方法: 修改校验密码策略等级 set global validate_password.policyLOW;...

解决vue3 vite打包报Root file specified for compilation问题

解决方法: 修改package.json打包命令 把 "build": "vue-tsc --noEmit && vite build" 修改为 "build": "vite build" 就可以了 另外关于allowJs这个问题,在tsconfig.json文件中配置"allowJs&qu…...

Java Swing + MySQL图书借阅管理系统

系列文章目录 Java Swing MySQL 图书管理系统 Java Swing MySQL 图书借阅管理系统 文章目录 系列文章目录前言一、项目展示二、部分代码1.Book2.BookDao3.DBUtil4.BookAddInternalFrame5.Login 三、配置 前言 项目是使用Java swing开发,界面设计比较简洁、适合作…...

ssm招聘信息管理系统-计算机毕业设计源码78049

摘 要 由于数据库和数据仓库技术的快速发展,招聘客户管理系统建设越来越向模块化、智能化、自我服务和管理科学化的方向发展。招聘客户系统对处理对象和服务对象,自身的系统结构,处理能力,都将适应技术发展的要求发生重大的变化。…...

eBPF可观测之网络流量控制和管理traffic control浅尝

目录 工程背景 环境准备 安装工具​​​ 安装依赖包 安装C依赖库 操作步骤 目录结构 代码展示 效果展示 拓展提升 工程背景 首先发表一个"暴论" eBPF在可观测方面的应用,就是各种google。 不需要学习内核,只要掌握ebpf开发套路。…...

Java技术精粹:高级面试问题与解答指南(二)

Java面试问题及答案 1. 什么是Java中的集合框架?请简述其主要接口和类。 答案: Java中的集合框架是一个设计用来存储和操作大量数据的统一架构。它主要由以下几个接口及其实现类组成: Collection: 它是最基本的集合接口,所有单列…...

地下停车场FM信号覆盖系统技术原理用与应用

随着我国城市化水平的快速推进与房地产的快速发展,城市停车场称为每栋建筑物的硬性配套建筑,尤其是商业综合体、医院、政府机关、机场、高铁站等场所出现了超大规模停车场,停放车辆可达数千辆,停车场的智能化与信息化水平也越来越…...

idea 出现 cpu占用100%

一、IDEA的CPU占用率过高 二、解决办法 idea安装路径bin目录 修改idea64.exe.vmoptions配置文件 原来的 -Xms128m -Xmx750m -XX:ReservedCodeCacheSize240m -XX:UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB50 修改为(IDEA优化内存配置) -Xms2048m -Xmx4096m -XX:Reser…...

如何学到数据库从入门到入土(MySQL篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接…...

安卓手机APP开发__Wi-Fi扫描概述

安卓手机APP开发__Wi-Fi扫描概述 目录 概述 Wi-Fi的扫描过程 限制 权限 Android 8.0 and Android 8.1: Android 9: Android 10 (API 级别 29) 和 更高版本: 扫描频率的限制 Android 8.0 and Android 8.1: Android 9: Android 10 and higher: 概述 你能使用Wi-Fi的…...

深入理解二叉树及其在C语言中的实现

一、引言 二叉树是数据结构中一种非常基础且重要的树形结构,它的每个节点最多有两个子节点,通常被称为左子节点和右子节点。二叉树在计算机科学中有着广泛的应用,如搜索、排序、存储数据等。本文将详细介绍二叉树的基本概念、特性以及在C语言…...

基于ssm+vue图书管理系统

基于ssmvue图书管理系统 ssm477图书管理系统 相关技术 javassmmysqlvueelementui...

【手把手教学】使用stitch 生成ui图,导入figma,再用codebuddy生成工程代码

目录 一.stich使用 1.1 关键词生成 1.2 生成ui图 1.3 导出figma​编辑 二. codebuddy使用 ​编辑2.1打开figma ​编辑 2.2 复制ui到设计面板 2.3生成工程代码 三. 结语 一.stich使用 stich官网地址 Google Stitch 是 Google Labs 推出的、基于 Gemini 大模型驱动的A…...

ABB机器人Profinet通信实战:如何正确传输Real类型数据(附完整代码示例)

ABB机器人Profinet通信实战:Real类型数据的高效传输与解析 在工业自动化领域,ABB机器人与PLC之间的实时数据交互是产线高效运行的关键。Profinet作为工业以太网标准协议,其通信性能直接影响着生产节拍和系统稳定性。而Real类型数据的传输&…...

OpenCV轮廓匹配避坑指南:用cv2.matchShapes做形状识别,为什么你的结果总不准?

OpenCV轮廓匹配避坑指南:为什么你的cv2.matchShapes结果总是不准? 在工业质检、医疗影像分析等场景中,形状匹配的准确性直接影响着整个系统的可靠性。许多开发者在使用OpenCV的cv2.matchShapes函数时,明明按照官方文档操作&#x…...

2025届必备的六大AI辅助写作神器解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 处于人工智能技术基础之上的智能辅助系统,是可给学术研究者送去高效、规范的开题…...

2026最权威的六大降重复率工具解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 飞速发展的人工智能技术,正深切地重塑着学术写作的范式,当下&#xf…...

STM32CubeMX实战指南:DMA驱动USART高效数据传输

1. DMA与USART协作的核心价值 第一次接触STM32的DMA功能时,我正被一个传感器数据采集项目折磨得焦头烂额。当时用传统的中断方式处理串口数据,CPU占用率直接飙到70%,整个系统卡得像老式拨号上网。直到尝试了DMAUSART组合,才真正体…...

告别恼人红叉!保姆级教程:用acme.sh给宝塔面板IP地址换上Let‘s Encrypt免费证书

从红叉到绿锁:零成本为宝塔面板IP地址部署可信SSL证书全指南 每次打开宝塔面板,那个刺眼的红色安全警告是否让你如鲠在喉?作为服务器管理员,我们比谁都清楚自签名证书的实际安全性,但浏览器固执的警告提示却让新手用户…...

PyTorch 2.8深度学习镜像入门必看:RTX 4090D环境验证与快速上手步骤

PyTorch 2.8深度学习镜像入门必看:RTX 4090D环境验证与快速上手步骤 1. 镜像概述与核心优势 PyTorch 2.8深度学习镜像专为RTX 4090D显卡优化设计,提供开箱即用的深度学习开发环境。这个镜像最显著的特点是免去了复杂的环境配置过程,让开发者…...

保姆级教程:在Ubuntu 24.04上用QEMU桥接网络,让虚拟机秒连外网

在Ubuntu 24.04上实现QEMU虚拟机与宿主机网络互通的终极指南 对于需要在本地环境测试国产操作系统或运行隔离开发环境的开发者来说,QEMU虚拟化方案因其轻量高效而备受青睐。但让虚拟机与宿主机网络互通往往成为新手的第一道门槛。本文将彻底解决这个问题——通过桥接…...

告别虚拟机!在Windows上用WSL2和NDK r27c交叉编译Android动态库(附CMake集成避坑指南)

在Windows上利用WSL2与NDK r27c高效构建Android动态库的完整指南 对于Android开发者而言,跨平台编译一直是个令人头疼的问题。传统虚拟机方案虽然功能完整,但资源占用高、启动慢,而纯Windows环境下的NDK工具链又常常遇到各种兼容性问题。本文…...