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

如何理解Python中一切皆对象?

Python

    • 一、示例代码
    • 二、Python中的魔法方法

一、示例代码

  • 有理数类
import mathclass rational:def __init__(self,p,q):self.p = pself.q = qdef __str__(self):return "{} / {}".format(self.p,self.q)def simplify(self):gcd = math.gcd(self.p,self.q)return rational(int(self.p / gcd),int(self.q / gcd))#加def __add__(self, other):return rational(self.p + other.p,self.q + other.q)#减def __sub__(self, other):return rational(self.p * other.q - other.p * self.q,self.q * other.q)#乘def __mul__(self, other):return rational(self.p * other.p,self.q * other.q)#除def __div__(self, other):return rational(self.p * other.q,self.q * other.p)#相等def __eq__(self, other):fz = self.simplify()fm = other.simplify()return fz.p == fm.p and fz.q == fm.qdef __float__(self):return float(self.p / self.q)

Python中一切皆对象,如常见的加(+)、减(-)、乘(*)、除(/)、相等(==)都是调用类中的某个方法
eg:

self:指的是调用该函数的对象,指代的是对象本身,和Java中的this相同
r = rational(1,2)
r1 = rational(1,4)
r + r1表示r对象调用+方法,也就是__add__方法,传入r1对象作为参数,可以理解为
r.+(r1)
同理减、乘、除都是

二、Python中的魔法方法

__xx __()的函数叫做魔法方法,指的是具有特殊功能的函数
1、__init __()

  • 构造方法,在实例化对象时默认被调用,不需要手动调用

2、__str __()

  • 当使用print输出对象的时候,默认打印对象的内存地址。如果类定义了__str
    __方法,那么就会打印从在这个方法中return的数据,相当于Java中重写toString()方法

3、__del __()
当删除对象时,python解释器也会默认调用__del __()方法

del 对象

相关文章:

如何理解Python中一切皆对象?

Python 一、示例代码二、Python中的魔法方法 一、示例代码 有理数类 import mathclass rational:def __init__(self,p,q):self.p pself.q qdef __str__(self):return "{} / {}".format(self.p,self.q)def simplify(self):gcd math.gcd(self.p,self.q)return rat…...

【如何学习Python自动化测试】—— 鼠标键盘操作

5 、 鼠标键盘操作 在浏览器中,通常会用到鼠标来进行操作,比如右键菜单中选择一个操作,在 selenium 中提供了下列鼠标相关操作。 ActionChains 类提供了以下方法: 点击鼠标:click()右击鼠标:context…...

随笔-事儿就这么个事儿

好久没写了,小A要催更,还答应让我写一下他的经历,这还有啥说的,开整。 1、升级 前段时间登录公司的办公系统处理一个事务申请,发现有个粗体标红的通知,是关于今年的晋升名单公示。进去看了一眼&#xff0…...

django理解03 数据库引入

配置 settings.py DATABASES {"default": {"ENGINE": "django.db.backends.mysql",NAME:307_django_db,USER: root,PASSWORD: 123456,HOST: 127.0.0.1,PORT: 3306,} }先创建指定名称的数据库databases create database self_django_db DEFAUL…...

Jtti:windows中apache怎么实现负载均衡

Jtti:windows中apache怎么实现负载均衡 在Windows环境下,你可以使用Apache HTTP Server搭建负载均衡集群。Apache提供了一个模块叫做mod_proxy,它可以用来实现反向代理和负载均衡。以下是一个简单的步骤来配置Apache负载均衡: 步骤…...

2311rust,到43版本更新

1.38.0 流水编译 要编译仓库,编译器不需要完全构建依赖项.相反,只需要它们的"元数据"(即类型,依赖关系,导出列表). 在编译过程的早期生成此元数据.从Rust1.38.0开始,Cargo利用这一点,在准备好元数据后立即自动开始构建依赖的仓库. 检查错误使用mem::{uninitialize…...

前端埋点上报的几种方式

现代Web应用程序中,埋点上报是一种重要的数据收集和分析手段。本文将介绍前端埋点上报的几种常见方式,并详细阐述如何在项目中运用这些方式进行数据上报,以帮助开发者更好地进行数据收集和分析。 上报方式 在前端中,常见的埋点上…...

外部 prometheus监控k8s集群资源

prometheus监控k8s集群资源 一,通过CADvisior 监控pod的资源状态1.1 授权外边用户可以访问prometheus接口。1.2 获取token保存1.3 配置prometheus.yml 启动并查看状态1.4 Grafana 导入仪表盘 二,通过kube-state-metrics 监控k8s资源状态2.1 部署 kube-st…...

centos安装神通数据库

1、安装 wget工具 yum install -y wget2、安装rar解压工具 wget --no-check-certificate http://www.rarlab.com/rar/rarlinux-x64-5.3.0.tar.gz tar zxvf rarlinux-x64-5.3.0.tar.gz && cd rar/ && make install3、下载oscar神通数据库(linux 64…...

汇编-PUSHFD和POPFD标志寄存器值压栈和出栈

PUSHFD指令将32位EFLAGS寄存器内容压入堆栈, 而POPFD指令则将栈顶单元内容弹出到EFLAGS寄存器 格式:...

基于SSM的进销存管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...

Django DRF限流组件

在DRF中,限流发生在认证、权限之后,限流组件的使用步骤: 1、编写自定义限流类; 2、在settings.py中配置redis; 3、安装django-redis; 4、启动redis服务; 5、局部应用,一般是在核心的视图中使用&…...

UEC++ day7

敌人NPC机制 敌人机制分析与需求 新建一个character类来作为敌人,直接建蓝图设置骨骼网格,因为敌人可能多种就不规定死,然后这个敌人肯定需要两个触发器,一个用于大范围巡逻,一个用于是否达到主角近点进行攻击 注意我…...

win11,安装python,pip,和opencv

1,安装python 在应用商店,输入python,下载安装 2,安装pip 在cmd中,输入pip install SomePackage,安装某一个版本的pip 3,安装opencv 在cmd中,输入 pip3 install opencv-contrib-python -i https://pyp…...

kafka入门(一):kafka消息发送与消费

kafka的基础概念 Producer (消息生产者) 向主题发布消息的客户端应用程序称为生产者(Producer),生产者用于持续不断的向某个主题发送消息。 Consumer (消息消费者) 订阅主题消息的客户端程序称为消费者(Consumer),消费者用于处理生产者产生的消息。 Co…...

CMap数据库筛选化学药物

数据库clue.io 文献链接:连接图谱:使用基因表达特征连接小分子、基因和疾病 |科学 (science.org) 基本模式:利用CMap将差异基因列表与数据库参考数据集比对;根据差异表达基因在参考基因表达谱富集情况得到一个相关性分数&#…...

mysql命令行(mysql-client)连接数据库

有时项目连接不上数据库,报错鉴权失败,先用mysql工具连接下,容易发现问题。 直接输入mysql看是否已安装,如果没有就安装下。 yum -y install mysql-client; 这个名称一直记不准,有时记为mysql-cli,结果发现…...

sklearn中的TfidfTransformer和gensim中的TfidfModel的区别

sklearn.feature_extraction.text.TfidfTransformer 和 gensim.models.TfidfModel 都是用于计算文本数据的 TF-IDF 值的工具。它们的主要区别在于实现方式和输入数据的格式。 1、实现方式和输入数据格式: TfidfTransformer 是 scikit-learn 中的一个类,…...

spring注解

spring注解 Configuration 用于标注配置类Bean 结合Configuration(full mode)使用或结合Component(light mode)使用。可以导入第三方组件,入方法有参数默认从IOC容器中获取,可以指定initMethod和destroyMethod 指定初…...

SpringCloud实用篇02

SpringCloud实用篇02 0.学习目标 1.Nacos配置管理 Nacos除了可以做注册中心,同样可以做配置管理来使用。 1.1.统一配置管理 当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...