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

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是一种面向对象的编程语言&#xff0c;可在Python中使用类和对象来组织和封装代码。面向对象编程&#xff08;OOP&#xff09;是一种编程范例&#xff0c;它将数据和操作数据的方法封装在一个对象内部&#xff0c;通过对象之间的交互来实现程序的功能。 1、面向对象…...

【无标题】vue2鼠标悬停(hover)时切换图片

在Vue 2中&#xff0c;要实现鼠标悬停&#xff08;hover&#xff09;时切换图片的功能&#xff0c;你不能直接在模板的:src绑定中处理这个逻辑&#xff0c;因为Vue的模板不支持条件渲染的复杂逻辑&#xff08;如基于鼠标状态的动态图片切换&#xff09;。但是&#xff0c;你可以…...

每天一个数据分析题(四百五十九)- 分析法

故障树分析法经常与哪些方法联合使用&#xff1f; A. 头脑风暴法 B. 五问法 C. 配对法 D. 引力法 数据分析认证考试介绍&#xff1a;点击进入 题目来源于CDA模拟题库 点击此处获取答案 数据分析专项练习题库 内容涵盖Python&#xff0c;SQL&#xff0c;统计学&#xf…...

英语:十、助动词和情态动词

1、助动词 &#xff08;1&#xff09;助动词be a、助动词be人称、数及时态的变化 be在作助动词时&#xff0c;也和系动词一样&#xff0c;有人称、数及时态的变化。 人称 数 现在时态 过去时态 现在分词 过去分词 第一人称 单数 am was being been 复数 are w…...

DB2-Db2DefaultValueConverter

提示&#xff1a;Db2DefaultValueConverter 类的核心作用是在 Debezium 数据库连接器中处理 IBM DB2 数据库表列的默认值。当 Debezium 监控 DB2 数据库的更改时&#xff0c;它需要能够正确地理解和表示数据库表中列的默认值&#xff0c;尤其是在没有明确值的情况下插入新行时。…...

(自适应手机端)行业协会机构网站模板

(自适应手机端)行业协会机构网站模板PbootCMS内核开发的网站模板&#xff0c;该模板适用于行业协会网站等企业&#xff0c;当然其他行业也可以做&#xff0c;只需要把文字图片换成其他行业的即可&#xff1b;自适应手机端&#xff0c;同一个后台&#xff0c;数据即时同步&#…...

视频理解调研笔记 | 2021年前视频动作分类发展脉络

前言 参考资料 本文基于以下四个李沐 AI 论文精度视频&#xff0c;对视频理解领域做初步调研 双流网络论文逐段精读 I3D 论文精读 视频理解论文串讲&#xff08;上&#xff09; 视频理解论文串讲&#xff08;下&#xff09; 相关论文 02014CVPRDeep VideoPDF12014NIPSTwo-Str…...

怎么通过 ssh 访问远程设备

文章目录 什么是 SSH背景环境配置前置准备在 linux 系统中安装 ssh 组件 什么是 SSH ssh 全称是 Secure Shell, 有时候也被叫做 Secure Socket Shell, 这个协议使你能通过命令行的方式安全的连接到远端计算机。当连接建立就会启动一个 shell 会话&#xff0c;这时你就能在你的…...

linux Ubuntu 安装mysql-8.0.39 二进制版本

我看到网上很多都写的乱七八糟, 我自己总结了一个 首先, 去Mysql官网上下载一个mysql-8.0.39二进制版本的安装包 这个你自己去下载我这里就写一个安装过程和遇到的坑 第一步 解压mysql压缩包和创建my.cnf文件 说明: 二进制安装指定版本MySQL的时候&#xff0c;需要手动写配置…...

ZooKeeper日志自动清理实用脚本

ZooKeeper日志自动清理:保持系统整洁的实用脚本 在管理ZooKeeper集群时,定期清理日志文件是一项重要但常被忽视的任务。本文将介绍一个简单而有效的bash脚本,用于自动清理ZooKeeper的日志和快照文件,并讨论如何使用cron来定期执行此脚本。 磁盘告警&#xff0c;所以写了一个脚…...

KVM+GFS分布式存储系统构建高可用

一&#xff1a;部署GFS高可用分布式存储环境 1&#xff1a;安装部署 KVM 虚拟化平台 2&#xff1a;部署 GlusterFS 在所有节点上执行如下命令&#xff1a; &#xff08;1&#xff09;关闭防所有节点的防火墙、SELiunx systemctl stop firewalldsystemctl disable firewallds…...

CIFAR-10 数据集图像分类与可视化

数据准备 CIFAR-10 and CIFAR-100 datasets (toronto.edu)在上述网站中下载Python版本的CIFAR-10数据集。 下载后的压缩包解压后会得到几个文件如下&#xff1a; 对应的data_batch_1 ~ data_batch_5 是划分好的训练数据&#xff0c;每个文件里包含10000张图片&#xff0c;test…...

没有了高项!!2024软考下半年软考高级哪个最容易考过?

距离2024上半年软考考试结束已经有一段时间了&#xff0c;有不少小伙伴都在开始准备下半年软考了&#xff0c;值得注意的是&#xff1a;近日各省陆续公布了2024上半年软考合格名单。那么&#xff0c;软考高级通过率到底如何&#xff1f;先来看看吧&#xff01; 一、上半年软考通…...

用户自定义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) 编码/解码…...

自闭症儿童能否摘帽?摘帽成功的秘诀揭秘

自闭症&#xff0c;这一曾经被视为不可逆转的障碍&#xff0c;如今在科学的进步与社会的关注下&#xff0c;正逐步展现出被“摘帽”的可能性。那么&#xff0c;自闭症儿童真的能完全摆脱这一标签&#xff0c;实现真正的“摘帽”吗&#xff1f;答案是肯定的&#xff0c;关键在于…...

主题巴巴WordPress主题合辑打包下载+主题巴巴SEO插件

主题巴巴WordPress主题合辑打包下载&#xff0c;包含博客一号、博客二号、博客X、门户一号、门户手机版、图片一号、杂志一号、自媒体一号、自媒体二号和主题巴巴SEO插件。...

git把本地文件上传远程仓库的流程

下载git&#xff0c;并创建一个仓库&#xff0c;这里着重介绍怎么把本地文件上传参考 正确执行步骤&#xff1a;在你需要上传的文件夹空白处下&#xff0c;右键鼠标&#xff0c;点击git bash here $ git init初始化当前目录 $ git status看一下当前分支里面有什么&#xff0c…...

基于springboot+vue+uniapp的养老院管理系统小程序

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…...

el-popover实现点击空白区域关闭,弹窗区域不关闭

难点&#xff1a; 普通方法会无法关闭&#xff0c;虚拟触发会导致选一个关一个&#xff0c;不用visible显示的方法太麻烦。 所以结合其他人的方法&#xff0c;使用手动监听判断的方法&#xff08;点击蓝色区域看参考&#xff0c;这大佬vue2的&#xff0c;我vue3&#xff09; 注…...

Disjoint Set Union

Problem One : 维护区间连通块 F - Range Connect MST (atcoder.jp) 暴力模拟的话&#xff0c;就是基于 Kruskal 的思想&#xff0c;按 c c c 从小到大排序&#xff0c;对于每次询问&#xff0c;枚举检查 j ∈ [ l , r ] j\in [l,r] j∈[l,r] &#xff0c;只要 j j j 与 …...

手写 Hibernate ORM 框架 05-基本效果测试

手写 Hibernate 系列 手写 Hibernate ORM 框架 00-hibernate 简介 手写 Hibernate ORM 框架 00-环境准备 手写 Hibernate ORM 框架 01-注解常量定义 手写 Hibernate ORM 框架 02-实体 Bean 定义&#xff0c;建表语句自动生成 手写 Hibernate ORM 框架 03-配置文件读取, 数…...

Unity材质球自动遍历所需贴图

Unity材质球自动遍历所需贴图 文章目录 Unity材质球自动遍历所需贴图一、原理二、用法1.代码&#xff1a;2.使用方法 一、原理 例如一个材质球名为&#xff1a;Decal_Text_Cranes_01_Mat &#xff0c; 然后从全局遍历出&#xff1a;Decal_Text_Cranes_01_Albedo赋值给材质球的…...

C++那些事之结构化绑定

C那些事之结构化绑定 在聊结构化绑定之前&#xff0c;有几个面试问题&#xff0c;看看你会不会&#xff1f; 如何使用结构化绑定访问自定义类的私有成员&#xff1f;如何使用结构化绑定修改自定义类的成员呢&#xff1f; 这几个题目估计没几个人能答上来&#xff0c;题目与答案…...

ECRS工时分析软件:工业工程精益生产的智慧引擎

在工业工程学的广阔领域中&#xff0c;程序分析一直扮演着至关重要的角色。其中&#xff0c;ECRS四大原则——取消、合并、重排、简化&#xff0c;作为程序分析的核心&#xff0c;旨在通过优化生产过程&#xff0c;实现成本的节省和精益生产的目标。如今&#xff0c;随着科技的…...

大语言模型的核心岗位及其要求

一、核心岗位 研究科学家&#xff08;Research Scientist&#xff09;&#xff1a; 负责制定研究计划&#xff0c;探索新算法和模型架构。数据科学家&#xff08;Data Scientist&#xff09;&#xff1a; 进行数据收集、分析和预处理。机器学习工程师&#xff08;Machine Lear…...

【屏驱MCU】RT-Thread 文件系统接口解析

本文主要介绍【屏驱MCU】基于RT-Thread 系统的文件系统原理介绍与代码接口梳理 目录 0. 个人简介 && 授权须知1. 文件系统架构1.1 虚拟文件系统目录架构 2. menuconfig 分析3. 代码接口分析3.1 DFS框架挂载目录3.2 【FAL抽象层】分区表和设备表3.3 如何将【文件路径】挂…...

进程管理工具top ps

概述 top 和 ps 是 Linux 系统中两个非常重要的用于管理和监控进程的命令工具。以下是它们的主要功能和区别&#xff1a; 1. 动静 2. 整体 & 详细 top&#xff1a; 动态视图&#xff1a;top 提供了一个实时动态更新的视图&#xff0c;能够持续显示系统中当前正在运行的进程…...

2年社招冲击字节,一天三面斩获offer

在工作满两年的时间选择了求变&#xff0c;带着运气和实力以社招身份重新看今天的互联网环境&#xff0c;从结果看还是复合预期的。 整个面试的流程还挺快的。周中让招聘专员给投递了简历。问什么时候面试&#xff0c;申请了一个周日&#xff0c;直接安排三面。下周周中就开启…...

oppo,埃科光电25届秋招,快手25届技术人才专项计划等几千家企业岗位内推

oppo&#xff0c;埃科光电25届秋招&#xff0c;快手25届技术人才专项计划等几千家企业岗位内推 ①【OPPO】25届秋招开启&#xff01; 内推简历优先筛选&#xff01; 【岗位类别】AI/算法类&#xff0c;软件类&#xff0c;硬件类&#xff0c;工程技术类&#xff0c;品牌策划类&a…...

【Vulnhub系列】Vulnhub Lampiao-1 靶场渗透(原创)

【Vulnhub系列靶场】Vulnhub Lampiao-1靶场渗透 原文转载已经过授权 原文链接&#xff1a;Lusen的小窝 - 学无止尽&#xff0c;不进则退 (lusensec.github.io) 一、主机发现 二、端口扫描 三、web框架 四、web渗透 1、信息收集 2、目录扫描 获得版本信息7.56 3、获取shell …...

如何登录我的wordpress/新手怎么做seo优化

开箱揭秘显示器戴尔UP3221Q到底怎么样&#xff1f;真的好吗&#xff1f;使用八个月反馈感受&#xff1f;这个戴尔UP3221Q可以的哈&#xff0c;才购的&#xff0c;显示器非常满意&#xff0c;支架做工精良&#xff0c;包装的泡沫非常厚&#xff0c;1500R的曲率沉浸感十足&#x…...

建筑设计师专业网站/百度引流怎么推广

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼该程序用于实现linux系统中wc命令的最简单模式wc 命令用于统计文件中字符信息。[xxlocalhost 1.5]$ wc 01.c 02.c 03.c15 23 131 01.c13 18 127 02.c14 20 128 03.c42 61 386 总用量使用c语言写出这种小程序。/** Name: count.c* T…...

个人网站 网站教程/百度一下网页

随着人工智能时代的到来&#xff0c;Python也以强悍的姿势走进人们的视野。国家政策扶持、企业大范围应用是的Python人才需求紧迫&#xff0c;从业人员薪资也水涨船高&#xff0c;转行学Python成为普遍现象。不过你真的了解Python吗?它有什么优势&#xff0c;又该怎样快速入门…...

python做网站用什么框架/竞价网络推广培训

RFID防碰撞算法学习 引用文章地址 RFID中的碰撞问题主要分为两类&#xff1a;一是阅读器碰撞问题&#xff0c;它产生于同一个物理区域内存在多个不同的阅读器&#xff0c;它们以同一频率同时与区域内的标签通信而引起的冲突。另一类是标签碰撞问题&#xff0c;如过标签同事处于…...

做网站 需要了解什么/优化推广排名网站教程

文字参考 http://www.cnblogs.com/Jackson-Bruce/p/4011733.html 需求&#xff1a; 用户输入不同的文字&#xff0c;随机显示3中不同的背景色&#xff08;例如&#xff1a;“高兴”的背景色是绿色&#xff0c;则要求在所有的页面中&#xff0c;"高兴"标签的背景色就…...

圣宠宠物网站建设/女教师遭网课入侵直播

简学-XXE攻击前言XML 基础知识XML 文档的构建模块DTD (文档类型定义)DTD 实体XXE的攻击与危害&#xff08;XML External Entity&#xff09;如何构建外部实体注入外部实体支持的协议有哪些&#xff1f;XXE 攻击产生的危害如何防御 XXE 攻击前言 在学习 OWASP TOP 10 时&#xf…...