如何理解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 对象

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

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

相关文章

「实用场景教程」如何用日程控件DHTMLX Scheduler制作酒店预订日历?(二)

dhtmlxScheduler是一个类似于Google日历的JavaScript日程安排控件,日历事件通过Ajax动态加载,支持通过拖放功能调整事件日期和时间,事件可以按天,周,月三个种视图显示。 DHTMLX Scheduler正式版下载 在本教程中&…

Atcoder ABC159

总体来说本期比较简单 C - Maximum Volume 答案显然是 O ( N 3 ) O(N^3) O(N3) D - Banned K 先统计总的,然后减去选到的那个数再重新计算 E - Dividing Chocolate 既然n范围是10,那么在n的宽度上做一个位操作,若i位与i1位之间有切割&…

数据结构之二叉树

前言:我们前面已经学习了数据结构的栈和队列,今天我们就来学习一下数据结构中的二叉树,那么作为二叉树我们就得先了解树的一些概念,还有二叉树一些特点。 树的概念: 树是一种非线性的数据结构,它是由n&…

golang指针学习

package mainimport "fmt"func main() {name:"飞雪无情"nameP:&name//取地址fmt.Println("name变量的内存地址为:",&name)fmt.Println("name变量的值为:",name)fmt.Println("name变量的内存地址为:",nameP)fmt.Prin…

DC电源模块检测故障步骤有哪些

BOSHIDA DC电源模块检测故障步骤有哪些 DC电源模块检测故障步骤如下: 1. 检查输入电压:用万用表测量输入电压,确保其在规定范围内。 2. 检查输出电压:用万用表或示波器测量输出电压,确保其在规定范围内。 3. 检查输…

使用vue-cli搭建vue项目

1:安装vue-cli 命令:npm install -g vue/cli 2:查看安装的版本 vue --version 或者 vue -V 3:创建项目 vue create 项目名称 名称小写 4:vue2框架中根据自己的需求选择(我选择…

鸿蒙:实现两个Page页面跳转

效果展示 这篇博文在《鸿蒙:从0到“Hello Harmony”》基础上实现两个Page页面跳转 1.构建第一个页面 第一个页面就是“Hello Harmony”,把文件名和显示内容都改一下,改成“FirstPage”,再添加一个“Next”按钮。 Entry Compone…

复杂类型,查询--学习笔记

1&#xff0c;复杂类型 解决问题&#xff1a;一些不容易获取到的数据&#xff0c;例如数组类型&#xff0c;集合类型等&#xff0c;获取他们的数据 -- 1.创建表 create table tb_array_person(name string,city_array array<string> )row format delimited fields term…

Servlet执行流程Servlet 生命周期

Servlet 生命周期 对象的生命周期指一个对象从被创建到被销毁的整个过程 import javax.servlet.*; import javax.servlet.annotation.WebServlet; import java.io.IOException; WebServlet(urlPatterns "/demo",loadOnStartup 10) public class ServletDemo imple…

Redis篇---第十三篇

系列文章目录 文章目录 系列文章目录前言一、redis的过期策略以及内存淘汰机制二、Redis 为什么是单线程的三、Redis 常见性能问题和解决方案?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看…

3DES算法概括

特点&#xff1a; 对称密钥&#xff1a; 3DES是一种对称密钥算法&#xff0c;即加密和解密使用相同的密钥。块密码&#xff1a; 3DES同样是块密码&#xff0c;将数据分为64位块。密钥长度&#xff1a; 3DES使用3个56位的密钥&#xff0c;合计168位。密钥可以选择为K1、K2、K3&…

Vue弹窗的使用

Vue弹窗的使用&#xff1a; Vue弹窗传值&#xff1a;

51单片机LED灯渐明渐暗实验

51单片机LED灯渐明渐暗实验 1.概述 这篇文章介绍使用单片机控制两个LED彩灯亮度渐明渐暗效果&#xff0c;详细介绍了操作步骤以及完整的程序代码&#xff0c;动手就能制作的小实验。 2.操作步骤 2.1.硬件搭建 1.硬件准备 名称型号数量单片机STC12C2052AD1LED彩灯无2晶振1…

单例设计模式是什么?什么是 Singleton 单例设计模式?Python 单例(单件)设计模式示例代码

什么是 Singleton 单例设计模式&#xff1f; 单例模式是一种创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问该实例。 主要思想&#xff1a; 单例模式确保某个类只有一个实例&#xff0c;并提供了一个访问该实例的全局访问点。它…

vatee万腾科技先锋之选:vatee创新力驱动着未来发展

在科技潮流的浩荡前行中&#xff0c;Vatee万腾崭新的科技先锋之选正以强大的创新力引领着未来的发展。Vatee万腾凭借其前瞻性的技术理念和卓越的创新实践&#xff0c;成为业界的引领者&#xff0c;为整个科技行业树立了标杆。 Vatee万腾不仅仅是一家科技公司&#xff0c;更是一…

React中StrictMode严格模式,导致开发环境,接口会请求两次或多次( useEffect 请求多次)

问题描述&#xff1a; 我在用 create-react-app时&#xff0c;开发环境&#xff0c;一进页面接口会请求两次或多次。 我在首页 useEffect里 请求一个接口&#xff0c;整个页面就在这里请求这一次接口。但 实际上请求了两次。我检查了代码&#xff0c;确定只调用了一次&#xf…

Go 异常处理流程

在 Go 语言中&#xff0c;panic、recover 和 defer 是用于处理异常情况的关键字。它们通常一起使用来实现对程序错误的处理和恢复。 1. defer 语句 defer 用于在函数返回之前执行一段代码。被 defer 修饰的语句或函数会在包含 defer 的函数执行完毕后执行。defer 常用于资源清…

基于SSM 离退休管理平台-计算机毕设 附源码 52629

ssm离退休管理平台 摘 要 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用SSM技术和mysql数据库来完成对系统的…

上海站活动回顾 | 聚焦私募视野,助力量化投研交易

11月16日下午&#xff0c;DolphinDB 携手华金证券&#xff0c;在上海成功举办了 D-Day 私募行业交流会&#xff0c;为大家带来了详实的私募行业场景解析、功能介绍、案例分享及现场演示。三十余位来自私募机构的核心策略研发、量化交易员、数据分析专家们齐聚现场&#xff0c;深…

Rust生态系统:探索常用的库和框架

大家好&#xff01;我是lincyang。 今天我们来探索Rust的生态系统&#xff0c;特别是其中的一些常用库和框架。 Rust生态系统虽然相比于一些更成熟的语言还在成长阶段&#xff0c;但已经有很多强大的工具和库支持各种应用的开发。 常用的Rust库和框架 Serde&#xff1a;一个…