python实现一个计算器
'''
实现一个计算器
'''
'''
首先熟悉一下这个阅读器的属性
'''
import subprocess
subprocess.run(["espeak", "-v", "en+f3", "This is a Calculator"])class Calculator:def speaker(self,word):subprocess.run(["espeak", "-v", "en+f3", word])def __check(func): #我要检查一下每一个输入的数值是不是数字 装饰器只接收func为参数,其余参数都是给inner的def inner(self,n):if not isinstance(n,(int, float)):raise ValueError('you should input a number')func(self,n)return innerdef __create_creator(word=''):def creator(func):def inner(self,n):self.speaker(word + str(n))func(self,n)return innerreturn creator@__checkdef __init__(self,n):self.__res=n #让res私有化,这样就不能从外界改变它的值@__check@__create_creator('plus')def plus(self,n):self.__res+=nreturn self #加上这句话就可以链式使用方法了@__check@__create_creator('minus')def minus(self,n):self.__res-=nreturn self@__check@__create_creator('multiply')def multiply(self,n):self.__res *= nreturn self@__check@__create_creator('divide')def divide(self,n):self.__res /= nreturn self@propertydef result(self): #result不可以被私有化,不然从外界也无法读到return self.__resdef show(self):print(self.__res)self.speaker(f'the result is {self.__res}')return self# c=Calculator(2)
# print(c.result)
# c.plus(1)
# print(c.result)
# c.minus(1)
# print(c.result)
# c.multiply(10)
# c.divide(5)
# c.show()c2=Calculator(3)
print(c2.__class__)
print(c2.plus(1).__class__)
c2.show()
加上return self应该可以链式使用的,但是却报错了class是None type...
先记录一下,后面再看看到底咋回事
后续:
破案了,写装饰器的时候def inner没有return func()
'''
实现一个计算器
'''
'''
首先熟悉一下这个阅读器的属性
'''
import subprocess
subprocess.run(["espeak", "-v", "en+f3", "This is a Calculator"])class Calculator:def speaker(self,word):subprocess.run(["espeak", "-v", "en+f3", word])def __check(func): #我要检查一下每一个输入的数值是不是数字 装饰器只接收func为参数,其余参数都是给inner的def inner(self,n):if not isinstance(n,(int, float)):raise ValueError('you should input a number')return func(self,n)return innerdef __create_creator(word=''):def creator(func):def inner(self,n):self.speaker(word + str(n))return func(self,n)return innerreturn creator@__checkdef __init__(self,n):self.__res=n #让res私有化,这样就不能从外界改变它的值@__check@__create_creator('plus')def plus(self,n):self.__res+=nreturn self #加上这句话就可以链式使用方法了@__check@__create_creator('minus')def minus(self,n):self.__res-=nreturn self@__check@__create_creator('multiply')def multiply(self,n):self.__res *= nreturn self@__check@__create_creator('divide')def divide(self,n):self.__res /= nreturn self@propertydef result(self): #result不可以被私有化,不然从外界也无法读到return self.__resdef reset(self):self.__res = 0return selfdef show(self):print(self.__res)self.speaker(f'the result is {self.__res}')return self# c=Calculator(2)
# print(c.result)
# c.plus(1)
# print(c.result)
# c.minus(1)
# print(c.result)
# c.multiply(10)
# c.divide(5)
# c.show()c2=Calculator(3)
print(c2.__class__)
print(c2.plus(1).__class__)
c2.plus(1).minus(1).multiply(2).show().divide(2).show().reset()
c2.show()
这样就对了
相关文章:
python实现一个计算器
实现一个计算器首先熟悉一下这个阅读器的属性import subprocess subprocess.run(["espeak", "-v", "enf3", "This is a Calculator"])class Calculator:def speaker(self,word):subprocess.run(["espeak", "-v", …...
C++ 共享内存ShellCode跨进程传输
在计算机安全领域,ShellCode是一段用于利用系统漏洞或执行特定任务的机器码。为了增加攻击的难度,研究人员经常探索新的传递ShellCode的方式。本文介绍了一种使用共享内存的方法,通过该方法,两个本地进程可以相互传递ShellCode&am…...
如何快速移植(从STM32F103到STM32F407)
最近用到F4的地方比较多,网上代码还是F1多一些,便需要移植代码,如何快速移植代码呢? 看下面这篇文章 外设 首先就是STM32的外设了。 STM32F407ZGT6的基本外设 STM32F407ZGT6 作为 MCU,该芯片是 STM32F407 里面配置…...
python高级练习题库实验1(B)部分
文章目录 题目1代码实验结果题目2代码实验结果题目3代码实验结果题目4代码实验结果题目5代码实验结果题目总结题目1 打包糖果小游戏,用户输入糖果品牌与个数,还有一个盒子里面可以装多少个糖果,输出一些打印信息,如下图所示: 代码 print("Packaging lollies into…...
Qt Rsa 加解密方法使用(pkcs1, pkcs8, 以及文件存储和内存存储密钥)
Qt RSA 加解密 完整使用 密钥格式: pkcs#1pkcs#8 如何区分密钥对是PKCS1还是PKCS8? 通常PKCS1密钥对的开始部分为:-----BEGIN RSA PRIVATE KEY-----或 -----BEGIN RSA PUBLIC KEY-----。而PKCS8密钥对的开始部分为:-----BEGIN…...
区分物理端口与软件端口概念:以交换机端口和Linux系统中的端口为例
文章目录 交换机端口和Linux系统中的端口有什么区别?1. 交换机的端口2. Linux系统中的端口因此,尽管两者都被称为"端口",但它们代表的含义和用途是完全不同的。 交换机端口和Linux系统中的端口有什么区别? 虽然都被称为…...
力扣226:翻转二叉树
力扣226:翻转二叉树 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例 2: 输入:root [2,1,3]…...
亚马逊鲲鹏系统智能自动注册与AI角色养号,探索数字化新境界
在数字化时代,亚马逊鲲鹏系统以其强大的自动化功能,为用户提供了前所未有的购物体验。如果你想利用鲲鹏系统进行自动化注册,那么准备好邮箱、IP、手机号等关键信息后,你将轻松实现自动注册,为购物之旅开启智能化新篇章…...
AOP操作日志记录
AOP操作日志记录 1.创建注解 Retention(RetentionPolicy.RUNTIME) Target(ElementType.METHOD) public interface PassportLog {String operatePage();String operateType();ClassTypEnum classType();}2.创建切面 对于字典,可以通过注解属性去转换,枚举…...
Linux C语言 42-进程间通信IPC之网络通信(套接字)
Linux C语言 42-进程间通信IPC之网络通信(套接字) 本节关键字:C语言 进程间通信 网络通信 套接字 TCP UDP 相关库函数:socket、bind、listen、accept、send、recv、sendto、recvfrom 参考之前的文章 Linux C语言 30-套接字操作…...
微服务知识大杂烩
1.什么是微服务? 微服务(Microservices)是一种软件架构风格,将一个大型应用程序划分为一组小型、自治且松耦合的服务。每个微服务负责执行特定的业务功能,并通过轻量级通信机制(如HTTP)相互协作。每个微服务可以独立开发、部署和扩展,使得应用程序更加灵活、可伸缩和可…...
记录一次vscode markdown的图片路径相关插件学习配置过程
插件及说明查找过程 csdn搜索markdown图片路径,找到关于这一款插件的回答。打开vscode拓展搜索Paste Image这款插件,看到下载量挺高的,应该不赖。 点击仓库,进入该插件开源的github仓库,查看README文件阅读说明. 淡然在Vscode 插件项目下的细…...
设计原则 | 依赖转置原则
一、依赖转置原则(DIP:Dependence Inversion Principle) 1、原理 高层模块不应该依赖低层模块,二者都应该依赖于抽象抽象不应该依赖于细节,细节应该依赖于抽象 2、层次化 Booch曾经说过:所有结构良好的面…...
前端开发实用技巧与经验分享
导语:在前端开发领域,掌握一些实用的技巧和经验可以帮助你更高效地完成任务。本文将分享一些前端开发的实用技巧和经验,帮助你在工作中更好地应对各种挑战。 一、使用开发者工具进行调试和优化 熟练掌握浏览器开发者工具的使用,…...
推荐一款Excel快速加载SQL的插件,方便又好用
如果告诉你只需要双击一下,SQL数据库中存放在表里面的数据,就能加载到你的Excel中,你想不想要? 今天给大家推荐一款好用的Excel插件,安装简单,使用方便,是经常使用SQL数据库的不二。 这款插件…...
Docker快速入门(docker加速,镜像,容器,数据卷常见命令操作整理)
Docker本质是将代码所需的环境依赖进行打包运行,而在Docker中最重要的是镜像和容器 镜像:可以简单地理解为每启动一个docker镜像就会占用计算机一个进程,这个进程和另外起的docker镜像的进程是相互独立的,以数据库为例,每个镜像都会copy一份数据库,在他所在的进程中.别的镜像在…...
http和https的区别有哪些
目录 HTTP(HyperText Transfer Protocol) HTTPS(HyperText Transfer Protocol Secure) 区别与优势 应用场景 未来趋势 当我们浏览互联网时,我们经常听到两个常用的协议:HTTP(HyperText Tra…...
使用Keil-MDK生成*.bin格式可执行文件
使用Keil-MDK生成*.bin格式可执行文件 文章目录 使用Keil-MDK生成*.bin格式可执行文件前言一、fromelf.exe工具二、使用方法1.配置输出2.输出格式 前言 在使用Keil MDK的集成开发环境中,默认情况下可以生成*.axf格式的调试文件和*.hex格式的可执行文件。虽然文件可…...
基于springboot+vue篮球联盟管理系统源码
🍅 简介:500精品计算机源码学习 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 文末获取源码 目录 一、以下学习内容欢迎交流: 二、文档资料截图: 三、项目技术栈 四、项目运行图 背景: 篮球运…...
分页助手入门以及小bug,报sql语法错误
导入坐标 5版本以上的分页助手 可以不用手动指定数据库语言,它会自动识别 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.3.2</version> </dependency&g…...
LM339比较器实战:手把手教你搭建电池电压监测电路(附电路图)
LM339比较器实战:手把手教你搭建电池电压监测电路(附电路图) 1. 为什么选择LM339作为电池监测核心器件? 在电子设计领域,电压监测是保障设备稳定运行的基础功能之一。LM339作为一款经典的四路电压比较器,…...
从零部署一个AI对话机器人:实战对比Gradio的Streaming UI与FastAPI的轻量API方案
从零部署一个AI对话机器人:实战对比Gradio的Streaming UI与FastAPI的轻量API方案 在AI应用开发领域,构建一个可交互的对话机器人已成为开发者验证想法、展示成果的标配需求。不同于传统Web开发的复杂架构,现代工具链让开发者能够用极简代码实…...
VS2022社区版离线安装后,真的不用登录吗?我的30天实测与长期使用避坑指南
VS2022社区版离线安装后长期免登录实战指南:破解30天授权谜题 第一次在完全离线的开发环境中双击VS2022图标时,那种忐忑感记忆犹新——这个号称"免费"的开发工具,会不会突然弹出登录框锁死我的工作流?微软官方文档对离线…...
告别无效Agent工程!掌握这3大核心,让你的AI助手效率飙升10倍!
最近 X 上有篇文章很火,叫《How To Be A World-Class Agentic Engineer》,作者是个深度的 Agent 工程实践者。 文章开头是这样描述的:你用着 Claude Code,每天琢磨自己是不是把它的能力榨干了。偶尔看到它干出极其弱智的事情&…...
零基础玩转CosyVoice:3步完成声音克隆,制作专属语音祝福
零基础玩转CosyVoice:3步完成声音克隆,制作专属语音祝福 1. 引言:让声音成为你的专属礼物 你有没有想过,用自己或亲友的声音,生成一段独一无二的语音祝福?比如,用妈妈的声音说“生日快乐”&am…...
caj2pdf使用技巧:10个高效转换CAJ文件的实用方法
caj2pdf使用技巧:10个高效转换CAJ文件的实用方法 【免费下载链接】caj2pdf Convert CAJ (China Academic Journals) files to PDF. 转换中国知网 CAJ 格式文献为 PDF。佛系转换,成功与否,皆是玄学。 项目地址: https://gitcode.com/gh_mirr…...
极简音乐工具:重新定义纯粹听歌体验
极简音乐工具:重新定义纯粹听歌体验 【免费下载链接】tonzhon-music 铜钟 (Tonzhon.com): 免费听歌; 没有直播, 社交, 广告, 干扰; 简洁纯粹, 资源丰富, 体验独特!(密码重置功能已回归) 项目地址: https://gitcode.com/GitHub_Trending/to/tonzhon-mus…...
python汽车4s店的汽车租赁服务管理系统vue
目录功能模块分析租赁服务核心功能技术实现要点扩展功能建议项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作功能模块分析 用户管理模块 用户注册与登录:支持手机号、邮箱注册,集成短信验证码功能。权限…...
Realistic Vision V5.1显存占用对比:启用offload前后VRAM峰值下降62%实测
Realistic Vision V5.1显存占用对比:启用offload前后VRAM峰值下降62%实测 1. 项目背景与技术特点 Realistic Vision V5.1是目前Stable Diffusion 1.5生态中最顶级的写实风格模型之一,能够生成媲美专业单反相机拍摄的人像作品。然而在实际使用中&#x…...
Go语言中的并发模式:从WaitGroup到errgroup
Go语言中的并发模式:从WaitGroup到errgroup 作为一个写了十几年代码的Go后端老兵,我深刻体会到并发编程的重要性。Go语言以其简洁的并发模型著称,通过goroutine和channel,我们可以轻松实现高效的并发程序。今天咱们就聊聊Go语言中…...
