黑马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包含一个或多个容器。如:应用容器/业务容器(淘 宝、京东、拼多多后台ÿ…...

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...
C#中的依赖注入
1. 依赖注入(Dependency Injection, DI)概述 定义 :依赖注入是一种设计模式,允许将组件的依赖关系从内部创建转移到外部提供。这样可以降低组件之间的耦合度,提高代码的可测试性、可维护性和可扩展性。 核心思想 &…...
大数据量高实时性场景下订单生成的优化方案
文章目录 一、问题背景二、核心优化目标三、架构设计方案3.1 分层架构设计 3.2 关键组件说明 四、核心优化策略4.1 异步处理与流量控制4.1.1 异步接口设计4.1.2 任务进度查询 4.2 批量处理与并行计算4.2.1 数据分批处理4.2.2 并行流处理 4.3 数据库优化4.3.1 批量插入4.3.2 索…...

Web 3D协作平台开发案例:构建制造业远程设计与可视化协作
HOOPS Communicator为开发者提供了丰富的定制化能力,助力他们在实现强大 Web 3D 可视化功能的同时,灵活构建符合特定业务需求的工程应用。对于希望构建在线协同设计工具的企业而言,如何在保障性能与用户体验的前提下实现高效开发,…...
【时时三省】(C语言基础)局部变量和全局变量
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 以前所见到的程序大多数是一个程序只包含一个main函数,变量是在函数的开头处定义的。这些变量在本函数范围内有效,即在本函数开头定义的变量,在本函数中可…...
n皇后问题的 C++ 回溯算法教学攻略
一、问题描述 n皇后问题是经典的回溯算法问题。给定一个 nn 的棋盘,要求在棋盘上放置 n 个皇后,使得任何两个皇后之间不能互相攻击。皇后可以攻击同一行、同一列以及同一对角线上的棋子。我们需要找出所有的合法放置方案并输出方案数。 二、输入输出形…...
Cursor 1.0 的核心功能亮点及技术价值分析
Cursor 1.0 的核心功能亮点及技术价值分析 结合官方更新和开发者实测整理: 🛠️ 一、BugBot:智能自动化代码审查 功能亮点:深度集成 GitHub,自动扫描 Pull Request(PR)中的潜在 Bug(…...
Java Lambda 表达式的缺点和替代方案
Java 8 引入的 Lambda 表达式曾被誉为编写简洁、函数式代码的革命性工具。但说实话,它们并不是万能钥匙。它有不少问题,比如它没有宣传的那么易读,在某些场景下还带来性能开销。 作为一名多年与 Java 冗长语法搏斗的开发者,我找到了更注重清晰、可维护性和性能的替代方案。…...

摆脱硬件依赖:SkyEye在轨道交通中的仿真应用
在城市轨道交通系统中,信号系统承担着确保列车安全、高效运行的关键任务。从排列进路、信号开放,到终点折返与接发车,几乎每一个调度动作背后都依赖于信号系统的精密控制与实时响应。作为信号系统的重要组成部分,目标控制器&#…...
C++ if语句完全指南:从基础到工程实践
一、选择结构在程序设计中的核心地位 程序流程控制如同城市交通网络,if语句则是这个网络中的决策枢纽。根据ISO C标准,选择结构占典型项目代码量的32%-47%,其正确使用直接影响程序的: 逻辑正确性 执行效率 可维护性 安全边界 …...
会计 - 合并1- 业务、控制、合并日
一、业务 1.1 业务的定义以及构成要素 业务,是指企业内部某些生产经营活动或资产的组合,该组合一般具有投入、加工处理过程和产出能力,能够独立计算其成本费用或所产生的收入。 (1)投入,指原材料、人工、必要的生产技术等无形资产以及构成产出能力的机器设备等其他长期资…...