python进阶——python面向对象
前言
Python是一种面向对象的编程语言,可在Python中使用类和对象来组织和封装代码。面向对象编程(OOP)是一种编程范例,它将数据和操作数据的方法封装在一个对象内部,通过对象之间的交互来实现程序的功能。
1、面向对象的定义
面向对象(Object-Oriented)编程是一种编程范式,它以"对象"作为程序的基本单元,将数据(属性)和操作数据的方法(行为)封装在一起,以此来模拟现实世界的事物和概念。面向对象的编程使得程序可以更加模块化、可扩展和可维护。
在用面向对象编程时,把现实世界中的某个事物封装为类(也可以理解为成模板)。当在程序中引用时,引用这个类的变量就是实例。
面向对象编程的核心核心概念有以下几个:类,对象,封装,继承,多态。
2、类与实例
类(Class):类是对象的定义,它描述了对象的属性和方法。类是创建对象的模板,定义了对象的行为和状态。
类的命名方式时首字母要大写,并且类的返回值是一个对象(实例)。
# 定义了一个类MyClas
class MyClass:passprint(type(MyClass))
# 输出:<class 'type'>
对象(Object):对象是类的实例,它具有类定义的属性和方法。对象是类的具体实体,通过实例化类来创建对象。
# 定义了一个类MyClas
class MyClass:pass# 使用一个变量去引用这个类,那么这个变量 my 就是实例
my = MyClass()
3、初始化函数(魔法函数)
- 初始化函数
在Python中,初始化函数是一个特殊的方法,用于在创建对象时进行一些初始化操作。初始化函数的名称是__init__(双下划线),它是所有类中必须定义的方法之一。
初始化函数在对象创建时自动调用,它接受self参数作为第一个参数,表示正在创建的对象本身。其他参数可以根据类的需要来定义。
初始化函数的主要作用是初始化对象的属性。在初始化函数中,可以使用self.属性名来定义对象的属性,并为其赋初值。
例:
class ATMan:"""类:类型实例:输出的一种类的表现形式"""def __init__(self, name, age):# self只的是本身使用这个函数的对象print(f"自身{self}", id(self))# name和age是形参self.name = nameself.age = agea = ATMan("塞罗", 18)
print(id(a))
# 输出:自身<__main__.ATMan object at 0x000001B4CFB60DD0> 1876090555856
1876090555856
通过id可以知道,self就是引用这个类的实例。
- 魔法函数
在Python中,魔法函数(Magic methods)是一类特殊的函数,它们以双下划线(__)开头和结尾,通常被称为双下划线方法或特殊方法。这些魔法函数在类中定义,用于定义类的行为和特性,使得类的实例可以表现得像内置类型一样。
- __init__()
初始化函数,也是魔法函数。当创建一个类的实例时自动调用。用于初始化对象的状态。
- __str__()
定义对象的“非正式”或友好的字符串表示,可以通过 str() 调用或者在 print() 中使用。
例:
class MyClass:def __init__(self, name, age):self.name = nameself.age = agedef __str__(self):return f"姓名:{self.name}"my = MyClass("小明", 18)
print(my) # 输出:姓名:小明
- __len__()
返回对象的长度,可以通过内置函数len()调用。
例:
class MyClass:def __init__(self, name, age):self.name = nameself.age = agedef __len__(self):return len(self.name)my = MyClass("小明", 18)
print(len(my)) # 输出:2
等等。。。。。
4、构造函数和析构函数
构造函数(Constructor): 构造函数是一种特殊的成员函数,用于创建对象时初始化对象的数据成员。构造函数的名称与类名相同,并且没有返回类型。构造函数可以有参数,也可以没有参数。如果没有定义构造函数,编译器会自动提供一个默认的构造函数。
例:
class MyClass:# 构造初始化函数的selfdef __new__(cls, *args, **kwargs):instance = super().__new__(cls)# 这里可以添加一些初始化逻辑return instancedef __init__(self):print("小明在玩洛克王国")mc = MyClass()
print(mc) # 输出为:小明在玩洛克王国
析构函数(Destructor): 析构函数是一种特殊的成员函数,用于销毁对象时释放对象占用的资源。析构函数的名称与类名相同,前面加上一个波浪号(~)作为前缀,没有返回类型,也不接受任何参数。如果没有定义析构函数,编译器会自动提供一个默认的析构函数。
例:
class MyClass:# 构造初始化函数的selfdef __new__(cls, *args, **kwargs):instance = super().__new__(cls)# 这里可以添加一些初始化逻辑return instancedef __init__(self):print("小明在玩洛克王国")# 析构函数def __del__(self):print("结束执行")mc = MyClass()
print(mc) # 输出为:小明在玩洛克王国结束执行
相关文章:
python进阶——python面向对象
前言 Python是一种面向对象的编程语言,可在Python中使用类和对象来组织和封装代码。面向对象编程(OOP)是一种编程范例,它将数据和操作数据的方法封装在一个对象内部,通过对象之间的交互来实现程序的功能。 1、面向对象…...
【无标题】vue2鼠标悬停(hover)时切换图片
在Vue 2中,要实现鼠标悬停(hover)时切换图片的功能,你不能直接在模板的:src绑定中处理这个逻辑,因为Vue的模板不支持条件渲染的复杂逻辑(如基于鼠标状态的动态图片切换)。但是,你可以…...
每天一个数据分析题(四百五十九)- 分析法
故障树分析法经常与哪些方法联合使用? A. 头脑风暴法 B. 五问法 C. 配对法 D. 引力法 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库 点击此处获取答案 数据分析专项练习题库 内容涵盖Python,SQL,统计学…...
英语:十、助动词和情态动词
1、助动词 (1)助动词be a、助动词be人称、数及时态的变化 be在作助动词时,也和系动词一样,有人称、数及时态的变化。 人称 数 现在时态 过去时态 现在分词 过去分词 第一人称 单数 am was being been 复数 are w…...
DB2-Db2DefaultValueConverter
提示:Db2DefaultValueConverter 类的核心作用是在 Debezium 数据库连接器中处理 IBM DB2 数据库表列的默认值。当 Debezium 监控 DB2 数据库的更改时,它需要能够正确地理解和表示数据库表中列的默认值,尤其是在没有明确值的情况下插入新行时。…...
(自适应手机端)行业协会机构网站模板
(自适应手机端)行业协会机构网站模板PbootCMS内核开发的网站模板,该模板适用于行业协会网站等企业,当然其他行业也可以做,只需要把文字图片换成其他行业的即可;自适应手机端,同一个后台,数据即时同步&#…...
视频理解调研笔记 | 2021年前视频动作分类发展脉络
前言 参考资料 本文基于以下四个李沐 AI 论文精度视频,对视频理解领域做初步调研 双流网络论文逐段精读 I3D 论文精读 视频理解论文串讲(上) 视频理解论文串讲(下) 相关论文 02014CVPRDeep VideoPDF12014NIPSTwo-Str…...
怎么通过 ssh 访问远程设备
文章目录 什么是 SSH背景环境配置前置准备在 linux 系统中安装 ssh 组件 什么是 SSH ssh 全称是 Secure Shell, 有时候也被叫做 Secure Socket Shell, 这个协议使你能通过命令行的方式安全的连接到远端计算机。当连接建立就会启动一个 shell 会话,这时你就能在你的…...
linux Ubuntu 安装mysql-8.0.39 二进制版本
我看到网上很多都写的乱七八糟, 我自己总结了一个 首先, 去Mysql官网上下载一个mysql-8.0.39二进制版本的安装包 这个你自己去下载我这里就写一个安装过程和遇到的坑 第一步 解压mysql压缩包和创建my.cnf文件 说明: 二进制安装指定版本MySQL的时候,需要手动写配置…...
ZooKeeper日志自动清理实用脚本
ZooKeeper日志自动清理:保持系统整洁的实用脚本 在管理ZooKeeper集群时,定期清理日志文件是一项重要但常被忽视的任务。本文将介绍一个简单而有效的bash脚本,用于自动清理ZooKeeper的日志和快照文件,并讨论如何使用cron来定期执行此脚本。 磁盘告警,所以写了一个脚…...
KVM+GFS分布式存储系统构建高可用
一:部署GFS高可用分布式存储环境 1:安装部署 KVM 虚拟化平台 2:部署 GlusterFS 在所有节点上执行如下命令: (1)关闭防所有节点的防火墙、SELiunx systemctl stop firewalldsystemctl disable firewallds…...
CIFAR-10 数据集图像分类与可视化
数据准备 CIFAR-10 and CIFAR-100 datasets (toronto.edu)在上述网站中下载Python版本的CIFAR-10数据集。 下载后的压缩包解压后会得到几个文件如下: 对应的data_batch_1 ~ data_batch_5 是划分好的训练数据,每个文件里包含10000张图片,test…...
没有了高项!!2024软考下半年软考高级哪个最容易考过?
距离2024上半年软考考试结束已经有一段时间了,有不少小伙伴都在开始准备下半年软考了,值得注意的是:近日各省陆续公布了2024上半年软考合格名单。那么,软考高级通过率到底如何?先来看看吧! 一、上半年软考通…...
用户自定义Table API Connector(Sources Sinks)
目录 概述 Metadata Planning Runtime 扩展点 动态表工厂(Dynamic Table Factories) 动态表(Dynamic Table) 动态表源(Dynamic Table Source) 扫描表源(Scan Table Source) 查找表源(Lookup Table Source) 动态表接收器(Dynamic Table Sink) 编码/解码…...
自闭症儿童能否摘帽?摘帽成功的秘诀揭秘
自闭症,这一曾经被视为不可逆转的障碍,如今在科学的进步与社会的关注下,正逐步展现出被“摘帽”的可能性。那么,自闭症儿童真的能完全摆脱这一标签,实现真正的“摘帽”吗?答案是肯定的,关键在于…...
主题巴巴WordPress主题合辑打包下载+主题巴巴SEO插件
主题巴巴WordPress主题合辑打包下载,包含博客一号、博客二号、博客X、门户一号、门户手机版、图片一号、杂志一号、自媒体一号、自媒体二号和主题巴巴SEO插件。...
git把本地文件上传远程仓库的流程
下载git,并创建一个仓库,这里着重介绍怎么把本地文件上传参考 正确执行步骤:在你需要上传的文件夹空白处下,右键鼠标,点击git bash here $ git init初始化当前目录 $ git status看一下当前分支里面有什么,…...
基于springboot+vue+uniapp的养老院管理系统小程序
开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…...
el-popover实现点击空白区域关闭,弹窗区域不关闭
难点: 普通方法会无法关闭,虚拟触发会导致选一个关一个,不用visible显示的方法太麻烦。 所以结合其他人的方法,使用手动监听判断的方法(点击蓝色区域看参考,这大佬vue2的,我vue3) 注…...
Disjoint Set Union
Problem One : 维护区间连通块 F - Range Connect MST (atcoder.jp) 暴力模拟的话,就是基于 Kruskal 的思想,按 c c c 从小到大排序,对于每次询问,枚举检查 j ∈ [ l , r ] j\in [l,r] j∈[l,r] ,只要 j j j 与 …...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
