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 与 …...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
