[Python学习篇] Python类

类是什么?

在 Python 中,类是一种创建对象的模板,定义了对象的属性和方法。通过类可以创建具有相同属性和行为的对象实例。

什么是属性?

属性即是特征,比如:人类的名字、年龄、身高、体重...等特征。

什么是方法?

方法即是动作,比如:人类吃饭、搬砖...等行为。

定义类

语法:

class 类名(父类名):

    属性
    初始化方法

    实例方法
    ......

注意:

类名要满足标识符命名规则,同时要遵循大驼峰命名习惯。类名后面的小括号`()`是写继承的类名的。如果没有继承,可以省略小括号,比如 `class 类名:`

示例:定义类,并使用类创建对象

# 创建类
class Test:# 定义属性name = "我是变量,在类中我叫属性"# 定义初始化方法def __init__(self):print("我是初始化方法")# 定义实例方法def test(self):print("我是普通函数,在类中我叫实例方法")# 使用类
# 通过类创建的变量,这里叫做对象
test = Test()  # 使用类创建一个对象,这里创建对象时使用的是初始化方法
print(test.name)  # 使用类中的属性
print(test.test())  # 使用类中的实例方法

self 讲解

class Test:name = "我是变量,在类中我叫属性"# self 是指向这个类的对象,用于引用调用类中的属性和方法。def test(self):# 比如我在类中想使用类中的属性或者方法。# print(name) #这种方法语法报错print(self.name)  # self.name 可以调用成功test = Test()
test.test()

类外面添加对象属性

语法:

对象名.属性名 = 值

示例:

class Test:name = "Tom"test = Test()
# 添加属性
test.age = 18# 使用属性
print(test.age)

类里面使用对象属性/方法

语法:

self.属性名

self.方法名()

示例:

class Test:def hello(self):# 类中使用类外的属性print(self.age)test = Test()
# 类外添加属性
test.age = 18print(test.hello())

魔法方法

在Python中, __xx__() 的函数叫做魔法方法(Magic Methods),也被称为双下划线方法(Dunder Methods),指的是具有特殊功能的函数,并与 Python 的内置操作符和函数交互。

`__init__` 初始化方法,构造函数。

class Test:def __init__(self, name, age):self.name = nameself.age = agetest = Test('Tom', 18)
print(test.name)  # Tom
print(test.age)  # 18

`__dict__` 打印对象的所有属性值。vars()也是这个作用。

class Test:def __init__(self, name, age):self.name = nameself.age = agetest = Test('Tom', 18)
print(test.__dict__)  # {'name': 'Tom', 'age': 18}
print(vars(test))  # {'name': 'Tom', 'age': 18}

`__str__`  print 打印对象时以字符串表示形式。同比java中的toString方法

class Test:def __init__(self, name, age):self.name = nameself.age = agedef __str__(self):return f'Test(name={self.name}, age={self.age})'test = Test('Tom', 18)
print(test)  # Test(name=Tom, age=18)
print(test.__str__())  # Test(name=Tom, age=18)
print(str(test))  # Test(name=Tom, age=18)

`__repr__` 与 __srt__类似,下面是它们的比较

class Test:def __init__(self, name, age):self.name = nameself.age = agedef __str__(self):return f'Test(name={self.name}, age={self.age})'def __repr__(self):return f'Person({self.name!r}, {self.age!r})'test = Test('Tom', 18)
print(test)  # Test(name=Tom, age=18)
print(repr(test))  # Person('Tom', 18)

`__call__` 可以让对象像方法一样被调用。作用是可以隐式的调用类中其他的方法,已经由call显示的调用了其他方法。

class Test:name = 'Tom'def __call__(self):self.hello()def hello(self):print(f"hello {self.name}")test = Test()
# 我们想调用类中的 hello 方法时,可以直接这样调用,hello已经由call调用了
test()  # hello Tom

`__del__` 析构函数,在对象被垃圾回收(或者我们主动使用del函数)时被调用。用于执行一些清理操作,例如关闭文件、释放资源等。

class Test:name = 'Tom'def __del__(self):# 这里可以写一些关闭资源的操作print(f"对象已经被删除.")test = Test()
del test  # 对象已经被删除.

Python中还有什么很多魔法方法,这里就不一一演示了。

完。

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

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

相关文章

JAVA集合框架、CAS、AQS

目录 一、java 的集合框架有哪些? 二、说-下 ArrayList 和 LinkedList? 三、HashSet和TreeSet的区别? 四、HashMap 的数据结构是什么? 五、CAS机制 六、AQS理解 一、java 的集合框架有哪些? Collection 是 Java 集合框架中的一个根接口,位于 java.util 包中。它…

Postgres JSON字段怎么修改key的名称

场景 当你不小心将 key 的名称写错了(人员类别:多了一个冒号),或者想把引文改为中文(type改为类型) 大致思路是添加一个新的 key,然后将旧的 key 删除 sql语句 假如 JSON 列为 extra&#x…

【SVN的使用-源代码管理工具-命令行的使用 Objective-C语言】

一、接下来,我们来说一个终端的命令行的使用, 1.我们说,你的电脑里边呢,有终端, 在Mac里边,你想新建一个txt,应该怎么写,对,打开文本编辑, 打开这个东西,写点儿东西,然后保存一下,保存的时候,你还要去选择格式, 现在,如果我们用命令行,可以更方便一些, 2.首…

【基于R语言群体遗传学】-10-适应性与正选择

在之前的博客中,我们学习了哈代温伯格模型,学习了Fisher模型,学习了遗传漂变与变异的模型,没有看过之前内容的朋友可以先看一下之前的文章: 群体遗传学_tRNA做科研的博客-CSDN博客 一些新名词 (1&#xf…

MySQL 中的 DDL、DML、DQL 和 DCL

文章目录 1. 数据定义语言(DDL)2. 数据操作语言(DML)3. 数据查询语言(DQL)4. 数据控制语言(DCL)总结 在 MySQL 数据库管理系统中,SQL 语句可以根据其功能分为不同的类别&…

解释如何在使用Bitmap时进行优化,以减少内存占用和提高性能。

在使用Android开发中的Bitmap时,优化其使用以减少内存占用和提高性能是一个重要且复杂的任务。Bitmap作为图像处理的核心,其处理不当往往会导致内存溢出(OutOfMemoryError)或应用性能下降。下面从技术难点、面试官关注点、回答吸引…

RAG 案框架(Qanything、RAGFlow、FastGPT、智谱RAG)对比

各家的技术方案 有道的QAnything 亮点在:rerank RAGFLow 亮点在:数据处理index 智谱AI 亮点在文档解析、切片、query改写及recall模型的微调 FastGPT 优点:灵活性更高 下面分别按照模块比较各框架的却别 功能模块QAnythingRAGFLowFastG…

使用create-vue创建Vue3项目

1. 前提环境 已安装16.0或更高版本的nodejs 2. 创建一个Vue应用 npm init vuelatest这一指令将会安装并执行create-vue 3. 为项目安装依赖并启动 npm install npm run dev启动成功会获得地址~

TP8/6 子域名绑定应用

原www.xxx.com/admin改为admincms.xxx.com config/app.php 官方文档:ThinkPHP官方手册

赋值运算符重载和const成员函数和 const函数

文章目录 1.运算符重载(1)(2)运算符重载的语法:(3)运算符重载的注意事项:(4)前置和后置重载区别 2.const成员函数3.取地址及const取地址操作符重载4.总结 1.运算符重载 (1) 我们知道内置类型(整形,字符型,浮点型…)可以进行一系…

2024-07-05 base SAS programming学习笔记9(variables)

1.在数据集增加累加变量值(SUM) 求和语句(SUM STATEMENT):variableexpression variable是累积求和的变量名,为数值型,默认初始值为0;该variable值则会保留到一个观测 当expression有缺失值,在求…

[Vite]Vite-legacy插件原理了解

[Vite]Vite-legacy插件原理了解 作用 检测旧浏览器:插件需要能够检测到用户的浏览器是否需要转换代码。这通常是通过用户代理字符串来实现的。代码转换:对于需要支持的旧浏览器,插件会使用Babel等工具将ES6代码转换为ES5代码。Polyfills注入…

android进程调度,线程调度的使用总结

关于android进程调度,线程调度的使用总结 一 java层的调用流程 上层关于调度主要用到的接口(ams,pms,SchedulingPolicyService等): setThreadScheduler setThreadGroupAndCpuset setThreadGroup setProcessGroup setProcessFrozen 调用到native对应的实…

【项目管理】常见的敏捷实践:Scrum框架

【项目管理】常见的敏捷实践:Scrum框架 精益、敏捷与Scrum框架Scrum框架实践Sprint(冲刺)Scrum角色Scrum工件Scrum会议 精益、敏捷与Scrum框架 敏捷与精益思想、看板、Scrum等概念的关系如下图所示: Lean 精益 Kanban 看板 Ag…

文件存储的方法一

文章目录 概念介绍实现方法示例代码 我们在上一章回中介绍了"如何实现本地存储"相关的内容,本章回中将介绍如何实现文件存储.闲话休提,让我们一起Talk Flutter吧。 概念介绍 我们在上一章回中介绍的本地存储只能存储dart语言中基本类型的数值…

机器学习训练之使用静态图加速

前言 MindSpore有两种运行模式:动态图模式和静态图模式。默认情况下是动态图模式,也可以手工切换为静态图模式。 动态图模式 动态图的特点是计算图的构建和计算同时发生,符合Python的解释执行方式。在调试模型时较为方便,能够实…

开发者评测|操作系统智能助手OS Copilot

操作系统智能助手OS Copilot 文章目录 操作系统智能助手OS CopilotOS Copilot 是什么优势功能 操作步骤创建实验重置密码创建Access Key配置安全组安装 os-copilot环境变量配置功能评测命令行模式多轮交互模式 OS Copilot 产品体验评测反馈OS Copilot 产品功能评测反馈 参考文档…

做测试/爬虫 selenium 元素定位 谷歌浏览器 插件推荐,提高元素定位效率

注:插件均在谷歌应用商店 下载 1.XPath Helper 插件 作用:用于Html中对目标字段或者属性值进行匹配 快捷启动:ctrl shift x 示例图如下: 2. ChroPath 插件 作用: 提高元素定位效率 启动:谷歌浏览器 按 F12 -&g…

【电商系统开发实用接口指南】包含国内国外多电商平台商品数据对接(附文档)

关于电商数据接口 开发电商系统的朋友对于电商平台API肯定不陌生,API接口即应用程序编程接口,电商平台开放部分API接口,供商家和服务商调用,以满足电商业务管理需求。随着电商市场需求的日益增长以及技术手段的不断成熟&#xf…

【C++第十课 - stack_queue】stack、queue的使用、适配器模型stack、queue和priority_queue的底层实现、deque

目录 一、stack使用1、push2、pop3、empty4、top题目1、最小栈2、栈的压入、弹出序3、逆波兰表达式求值 二、queue的使用priority_queue习题 三、适配器stack的底层实现queue的底层实现priority_queue的底层实现仿函数/函数对象函数指针 四、deque 一、stack使用 stack是个容器…