python基础——类【类的定义和使用、魔术方法】

📝前言:
python中的类,自我感觉在某种程度上和C语言的结构体是有共同之处的,如果有兴趣,可以先看看这篇文章:C语言——结构体类型(一),先了解一下C语言中的结构体,对学习python中的类也有一定帮助。
这篇文章主要讲解一下python语法中关于类的基础知识:
1,类的定义和使用
2,魔术方法

🎬个人简介:努力学习ing
📋个人专栏:C语言入门基础以及python入门基础
🎀CSDN主页 愚润求学
🌄每日鸡汤:再坚持一秒钟,机会也许就在下一秒


文章目录

  • 一,类的定义和使用
  • 二,魔术方法
    • 1,__init__
    • 2,__str__
    • 3,__lt__
    • 4,__le__
    • 5,__eq__

一,类的定义和使用

在 Python 中,类是对象的蓝图,它定义了对象属性方法。类提供了创建对象的方法,对象是类的实例。使用类可以将代码组织为逻辑单元,并使代码更加模块化。
定义语法:

class 类名:属性1属性2def 方法(slef,参数1,参数2……):……

下面是一个简单的 Python 类示例:

class Dog:legs = 4  # 类属性name = None
# 类方法def bark(self):print("汪汪!")def sit(self):print(f"{self.name}坐下了。")dog1 = Dog()  # 创建对象实例
dog1.name = "小黄"  # 初始化属性
dog1.sit()  # 调用方法

注意:我们在类内部定义方法的时候参数部分要多加一个self,如:def sit(self):
在使用类属性的时候,也需要用self,如:self.name
(但是我们在外部调用方法的时候,则不需要传入这个self参数)
运行结果:
在这里插入图片描述

二,魔术方法

在Python中,魔术方法是一类特殊的方法,它们被预先定义,用于实现某些特定的功能。魔术方法的名字以双下划线(__)开头和结尾。以下是Python中一些常见的魔术方法:
在这里插入图片描述
(此图片来源于B站黑马程序员)
下面我将展示使用上述魔术方法的示例:

1,init

__init__ 方法是一个特殊的方法,称为类的构造函数或初始化方法。当您创建一个类的实例时,__init__ 方法会自动被调用。
下面是一个简单的示例,其中我们使用 init 方法初始化一个名为 Person 的类的属性:

class Person:def __init__(self, name, age):self.name = name  # 意思是用传入的参数name给属性name赋值self.age = age# 创建一个 Person 类的实例
p1 = Person("Alice", 30)# 打印创建的实例的属性
print(p1.name)  # 输出: Alice
print(p1.age)   # 输出: 30

2,str

__str__ 方法是一个特殊的方法,用于定义当尝试将对象转换为字符串时应该执行的操作。通常,__str__ 方法返回对象的字符串表示。
下面是一个简单的示例,其中我们使用 str 方法为 Person 类提供一个自定义的字符串表示:

class Person:def __init__(self, name, age):self.name = nameself.age = agedef __str__(self):return f"{self.name} is {self.age} years old."# 创建一个 Person 类的实例
p1 = Person("Alice", 30)# 将对象转换为字符串
print(str(p1))  # 输出: Alice is 30 years old.

3,lt

__lt__ 方法是一个特殊的方法,用于定义当两个对象进行比较时应该执行的操作。在比较运算符 < 的左侧和右侧对象时,将调用 __lt__ 方法。
下面是一个简单的示例,其中我们使用 lt 方法定义 Person 类实例之间的比较:

class Person:def __init__(self, name, age):self.name = nameself.age = agedef __lt__(self, other):return self.age < other.age# 创建两个 Person 类的实例
p1 = Person("Alice", 30)
p2 = Person("Bob", 35)# 使用比较运算符 < 进行比较
print(p1 < p2)  # 输出: True

在本例中,我们根据年龄进行比较,因此当 p1.age 小于 p2.age 时,结果为 True

4,le

__le__ 方法是一个特殊的方法,用于定义当两个对象进行比较时应该执行的操作。在比较运算符 <= 的左侧和右侧对象时,将调用 __le__ 方法。(和__lt__类似)
面是一个简单的示例,其中我们使用 __le__ 方法定义 Person 类实例之间的比较:

class Person:def __init__(self, name, age):self.name = nameself.age = agedef __le__(self, other):return self.age <= other.age# 创建两个 Person 类的实例
p1 = Person("Alice", 30)
p2 = Person("Bob", 35)# 使用比较运算符 <= 进行比较
print(p1 <= p2)  # 输出: True

5,eq

__eq__ 方法是一个特殊的方法,用于定义当两个对象进行比较时应该执行的操作。在比较运算符 == 的左侧和右侧对象时,将调用 __eq__ 方法。
下面是一个简单的示例,其中我们使用 __eq__ 方法定义 Person 类实例之间的比较:

class Person:def __init__(self, name, age):self.name = nameself.age = agedef __eq__(self, other):return self.age == other.age# 创建两个 Person 类的实例
p1 = Person("Alice", 30)
p2 = Person("Bob", 30)# 使用比较运算符 == 进行比较
print(p1 == p2)  # 输出: False

当然,python中的类还有很多魔术方法,在这里就不一一介绍了,我们只需在需要使用的时候进行查阅即可。


🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/812544.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Ubuntu上安装Docker Compose

Docker Compose 是一个用于定义和管理Docker容器的工具&#xff0c;它使用yml来配置应用的服务、网络和卷等。特别是在定义多个容器时&#xff0c;它非常擅长定义多个容器之间的关系和依赖。 第一步&#xff1a;更新软件包 sudo apt update第二步&#xff1a;安装网络工具cur…

基于FMC接口的Kintex-7 XC7K325T PCIeX4 3U PXIe接口卡

基于FMC接口的Kintex-7 XC7K325T PCIeX4 3U PXIe接口卡 一、板卡概述 本板卡基于Xilinx公司的FPGAXC7K325T-2FFG900 芯片&#xff0c;pin_to_pin兼容FPGAXC7K410T-2FFG900 &#xff0c;支持PCIeX8、64bit DDR3容量2GByte&#xff0c;HPC的FMC连接器&#xff0c;板卡支持PXI…

【QT教程】QML传感器融合应用

QML传感器融合应用 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C扩展开发视频课程 免费QT视频课程 您可以看免费1000个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费看 免…

基于单片机的家用无线火灾报警系统设计

摘 要:针对普通家庭的火灾防范需求,设计一种基于单片机的家用无线智能火灾报警系统。该系统主要由传感器、单片机、无线通信模块、GSM 模块、输入显示模块、声光报警电路和GSM 报警电路组成。系统工作时,检测部分单片机判断是否发生火灾,并将信息通过无线通信模块传…

【INNODB引擎篇】深奥探究Innodb存储引擎

&#x1f525;作者主页&#xff1a;小林同学的学习笔录 &#x1f525;mysql专栏&#xff1a;小林同学的专栏 目录 1.InnoDB引擎 1.1 逻辑存储结构 1.2 架构 1.2.1 概述 1.2.2 内存结构 1.2.3 磁盘结构 1.2.4 后台线程 1.3 事务原理 1.3.1 事务基础 1.3.2 redo log 1.…

时间复杂度详解1——定义和简单计算

算法效率的度量方法 事后统计方法 事后统计方法&#xff1a;这种方法主要是通过设计好的测试程序和数据&#xff0c;利用计算机计时器对不同算法编制的程序的运行时间进行比较&#xff0c;从而确定算法效率的高低。 但这种方法显然是有很大缺陷的&#xff1a; 必须依据算法事先…

分布式系统:缓存与数据库一致性问题

前言 缓存设计是应用系统设计中重要的一环&#xff0c;是通过空间换取时间的一种策略&#xff0c;达到高性能访问数据的目的&#xff1b;但是缓存的数据并不是时刻存在内存中&#xff0c;当数据发生变化时&#xff0c;如何与数据库中的数据保持一致&#xff0c;以满足业务系统…

AI推介-多模态视觉语言模型VLMs论文速览(arXiv方向):2024.04.05-2024.04.10

文章目录~ 1.BRAVE: Broadening the visual encoding of vision-language models2.ORacle: Large Vision-Language Models for Knowledge-Guided Holistic OR Domain Modeling3.MedRG: Medical Report Grounding with Multi-modal Large Language Model4.InternLM-XComposer2-4…

论软件系统的架构风格,使用三段论 写一篇系统架构师论文

软件系统的架构风格是指在软件系统设计与开发过程中&#xff0c;采用的一组相互协调的设计原则、模式和实践。这些风格不仅影响着系统的技术实现&#xff0c;还关乎到系统的可维护性、可扩展性和可靠性等关键质量属性。通过三段论的结构&#xff0c;本文旨在探讨软件系统架构风…

cocos jsb调用IOS震动功能

js端代码&#xff1a; export default class JsbUtils {public static callVibration(data: any): void {if (CC_JSB) {// ts-ignorejsb.reflection.callStaticMethod(JsBridge, sayMe);jsb.reflection.callStaticMethod(JsBridge, callVibration:, data);}}} export const jsb…

华为校招机试 - 网络保卫战(20240410)

题目描述 公有云的某个 region 内,N 个网络节点组网情况可以使用一个 N * N 的矩阵 matrix 表示。 在这个组网图中,matrix[i][j] = p 时,表示用户在编号为 i 的节点访问编号为 j 的节点时,必须在 i 节点上具有 ≥ p 的权限等级( p = 0 时表示无法通过第 i 节点访问 j 节…

hive的自定义函数

一、自定义函数的实现方式 1.创建临时函数 (1)创建maven项目&#xff0c;并加入依赖 <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId> <version>3.1.2</version> </dependency> (2)编写…

02-攻防世界PHP2

题目 authenticate:证明什么是真的 解题 观察题目可知&#xff0c;访问index.phps可能会有不一样的发现 http://61.147.171.105:51671/index.phps访问该链接&#xff0c;可以得到下面的界面 这里只显示出了部分代码&#xff0c;右键该界面&#xff0c;点击查看源代码&#xf…

使用ArrayList.removeAll(List list)导致的机器重启

背景 先说一下背景&#xff0c;博主所在的业务组有一个核心系统&#xff0c;需要同步两个不同数据源给过来的数据到redis中&#xff0c;但是每次同步之前需要过滤掉一部分数据&#xff0c;只存储剩下的数据。每次同步的数据与需要过滤掉的数据量级大概在0-100w的数据不等。 由…

Qt/QML编程之路:图片进度条的实现(50)

要实现进度条,而进度条是通过一个图片来展示的,比如逐渐增大的音量,或者逐步增大的车速,通过图片显示的效果肯定更好一些。最直接的想法是通过一个透明的rectagle,把不想让看到的遮住,实际上这种方法不可行。 import QtQuick 2.5 import QtQuick.Window 2.2 import QtGra…

【学习】移动端兼容性测试有什么方法及重要性

随着移动互联网的快速发展&#xff0c;移动应用程序已经成为人们日常生活中不可或缺的一部分。然而&#xff0c;由于各种移动设备的硬件和软件差异&#xff0c;移动应用程序的兼容性问题也越来越突出。因此&#xff0c;移动端兼容性测试成为了一个重要的环节&#xff0c;它可以…

如何在 Android 设备上恢复已删除/丢失的文档

随着Android设备内存容量的不断增加&#xff0c;许多人将手机作为移动硬盘来存储大量文档或其他文件。由于某些原因&#xff0c;文件丢失绝对是一场彻头彻尾的噩梦&#xff0c;因为里面的数据可能是要汇报的学习档案、领导会议的安排、或者付费电子书等。通常&#xff0c;你首先…

如何备考蓝桥杯赛事 怎样才能取得好成绩?

在计算机领域&#xff0c;蓝桥杯赛事一直是备受关注的比赛之一。参加蓝桥杯不仅可以锻炼自己的编程能力&#xff0c;还能够结识志同道合的朋友&#xff0c;拓展自己的人际关系。然而&#xff0c;想要在蓝桥杯赛事中取得好成绩并不是一件容易的事情&#xff0c;需要充分的准备和…

02_JavaWeb中的Tomcat(详解)

文章目录 Tomcat1, 概述1.1 安装1.2 目录结构1.3 启动/停止 2, 资源部署2.1 直接部署: 主要和重要的方式2.2 虚拟映射: 重要2.2.1 方式一:2.2.1 方式二: 2.3 原理解析 3, Tomcat组件3.1 Connector3.2 Engine3.2.1 Host3.2.1.1 Context 4, 其它: 重要4.1 设置 Tomcat 1, 概述 w…

sql server2008触发器

sql server在Navicat工具不能插入数据 可以去写代码插入&#xff0c;代码连接sql server可以插入 或者使用sql server专门的工具 BEGINdeclare a int;declare s t_amount;select a baddebt_age_id,srate from aa_baddebt_age;INSERT INTO dade(id,name) VALUES(a,s) END