23面向对象案例1

news2024/11/20 11:46:31

目录

1、计算连续表达式的一个过程

2、优化后的代码

为什么不能return result+=n?

3、用面向对象的方法可以解决冗余的问题,但是还是不能解决result的值可以被随意修改的问题

4、解决不能被随意修改的问题,可以将类属性改成私有变量吗,但是随之而来的问题就是也不能更改读取和访问了

5、最后用实例对象极限优化,。。我不能理解 为啥一开始不用实例对象来着,不是更容易吗


1、计算连续表达式的一个过程

但是这个代码有点冗余,有一点可以修改和优化的地方,具体看如下

#计算器,实现一些基本操作,如:加减乘除
def jia(n1,n2):
    return n1 +n2
def jian(n1,n2):
    return n1-n2
def cheng(n1,n2):
    return n1*n2
def chu(n1,n2):
    return n1 / n2
# res = jia(3,4)
# print(res)
# res1 = jian(3,8)
# print(res1)
#(2+6-4)*5
r1 = jia(2,6)
r2 = jian(r1,4)
r3 = cheng(r2,5)
print(r3)

2、优化后的代码

result = 0
def first_value(v):
    global  result
    result = v
def jia(n):
    global result
    result += n
def jian(n):
    global result
    result -= n
def cheng(n):
    global result
    result *= n
def chu(n):
    global result
    result / n
# res = jia(3,4)
# print(res)
# res1 = jian(3,8)
# print(res1)
#(2+6-4)*5
# r1 = jia(2,6)
# r2 = jian(r1,4)
# r3 = cheng(r2,5)
# print(r3)

first_value(2)
jia(6)
jian(4)
cheng(5)
print(result)

为什么不能return result+=n?

在Python中,return 语句用于从函数中返回一个值,并且结束函数的执行。而 result += n 是一个赋值语句,它将 result 的值加上 n 并赋给 result,但它并不返回任何值。

3、用面向对象的方法可以解决冗余的问题,但是还是不能解决result的值可以被随意修改的问题

class Caculator:
    result = 0
    @classmethod
    def first_value(cls,n):
        cls.result = n
    @classmethod
    def jia(cls,n):
        cls.result += n
    @classmethod
    def jian(cls,n):
        cls.result -=n
    @classmethod
    def cheng(cls,n):
        cls.result *= n
    @classmethod
    def chu(cls,n):
        cls.result /= n
Caculator.first_value(2)
Caculator.jia(6)
Caculator.jian(4)
Caculator.cheng(5)
print(Caculator.result)

4、解决不能被随意修改的问题,可以将类属性改成私有变量吗,但是随之而来的问题就是也不能更改读取和访问了

class Caculator:
    __result = 0
    @classmethod
    def first_value(cls,n):
        cls.__result = n
    @classmethod
    def jia(cls,n):
        cls.__result += n
    @classmethod
    def jian(cls,n):
        cls.__result -=n
    @classmethod
    def cheng(cls,n):
        cls.__result *= n
    @classmethod
    def chu(cls,n):
        cls.__result /= n
    @classmethod
    def show(cls):
        print('计算的结果是%s'%cls.__result)
Caculator.first_value(2)
Caculator.jia(6)
Caculator.jian(4)
Caculator.cheng(5)
Caculator.show()

改成私有属性,照样可以访问!!!只不过需要在最后面那块加一个显示函数类似于show这种的~~~

5、最后用实例对象极限优化,。。我不能理解 为啥一开始不用实例对象来着,不是更容易吗

class Caculor():
    def __init__(self,num):
        self.__result = num
    def jia(self,n):
        self.__result += n
    def jian(self,n):
        self.__result -= n
    def cheng(self,n):
        self.__result *= n
    def chu(self,n):
        self.__result /= n
    def show(self):
        self.__result
        print('最终计算结果是%s'%self.__result)
p1 = Caculor(2)

p1.jia(6)
p1.jian(4)
p1.cheng(5)
p1.show()

6、更好的修改是增加一个容错机制

class Caculator:
    def __init__(self,num):
        if not isinstance(num,int):
            raise TypeError('阿偶,不是一个整型数据哦')
        self.__result=num
    def jia(self,n):
        self.__result += n
    def jian(self,n):
        self.__result -= n
    def cheng(self,n):
        self.__result *= n
    def chu(self,n):
        self.__result /= n
    def show(self):
        print('最终结果是%s'%self.__result)
c1 = Caculator('axc')
c1.jia(6)
c1.jian(4)
c1.cheng(5)
c1.show()

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

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

相关文章

Marvin攻击25 年之久的RSA解密漏洞重现

1998 年发现的与 SSL 服务器中的 PKCS #1 v1.5 填充相关的缺陷(据信已得到解决)至今仍然影响着多个广泛使用的项目。 经过衡量端到端操作的广泛测试后,红帽研究人员发现了原始定时攻击的几种变体,统称为“马文攻击”,…

343. 整数拆分 96.不同的二叉搜索树

343. 整数拆分 设dp[i]表示拆分 数字i 出来的正整数相乘值最大的值 (i - j) * j,和dp[i - j] * j是获得dp[i]的两种乘法,在里面求最大值可以得到当前dp[i]的最大值,但是这一次的得出的最大值如果赋值给dp[i],可能没有没赋值的dp[i]大&#…

springboot aop详解

springboot aop的实现方式有哪些 在 Spring Boot 中,AOP(面向切面编程)是通过 Spring Framework 提供的 AOP 模块来实现的。Spring AOP 提供了几种实现方式来应用切面编程,包括以下几种: 基于代理的 AOP: …

CSS变量 var()的用法

写在前面 这里介绍一下开发中常用的css变量var(),它可以实现样式的动态设置,使用方法主要分为全局使用和局部使用两种。 如何定义CSS变量var() 在CSS文件中,变量需要使用 – 作为前缀来定义,后面跟上变量名和值,如&a…

基于人工电场优化的BP神经网络(分类应用) - 附代码

基于人工电场优化的BP神经网络(分类应用) - 附代码 文章目录 基于人工电场优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.人工电场优化BP神经网络3.1 BP神经网络参数设置3.2 人工电场算法应用 4.测试结果…

ARM +FPGA GPIB IP核实现

目前在数据发生其技术上居领先的是美国的 Tektronix 公司和 Agilent 公司。 Agilent 公司的台式脉冲 / 数据发生器家族的最高时钟频率达 3GHz (定 时发生器),数据发生器 E81200 在通道数为 8CH 时数据速率为 660Mb/s, 即可以产…

22python生命周期的一种案例

第一个问题,什么叫生命周期? 生命周期就是一个对象从产生到消亡的一个周期过程,总体来说是一个这样的 展示一下生命周期的一点点的小案例吧~ 1、利用全局变量 #以下是一个python展示生命周期的方法过程 personCount 0 class Person:def _…

月薪过二万的Java面试

文章目录 📕我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文创造者、技术文章评审老师、问卷调查设计师、个人社区创始人、开源项目贡献者。🌎跑过十五…

创新YOLOv5改进:结合全新可变形大核注意力(D-LKA Attention)实现多尺度目标涨点

🔥🔥🔥 提升多尺度目标检测,创新提升 🔥🔥🔥 🔥🔥🔥 捕捉图像特征和处理复杂图像特征 🔥🔥🔥 👉👉👉: 本专栏包含大量的新设计的创新想法,包含详细的代码和说明,具备有效的创新组合,可以有效应用到改进创新当中 👉👉👉: 🐤🐤�…

Java并发面试题:(一)线程的5种状态及转换

线程的状态转换 1、新建状态(New):新创建了一个线程对象。 2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位 于可运行线程池中,变得可运…

设计模式(1)-设计模式前置基础知识

1,设计模式概述 1.1 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。 1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫亚历山大(Christopher Alexand…

三大方法快速发现商业规律

文章目录 三大方法快速发现商业规律一、市场调研二、数据分析三、案例分析 📕我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文创造者、技术文章评审老师、问卷调查…

新时代高效记账:自动化智能如何进行财务管理

随着科技的不断发展,自动化智能已经逐渐渗透到我们生活的各个领域。在财务管理中,自动化智能的应用显得尤为重要。它不仅可以提高财务管理的效率和精度,还能帮助我们更好地规划和掌控公司的财务状况 晨曦记账本提供了多种高效财务管理工具。…

【linux kernel】对linux内核设备的注册机制和查找机制分析

文章目录 1、简介2、device_initialize分析3、device_add分析4、总结 🔺【linux内核系列文章】 👉对一些文章内容进行了勘误,本系列文章长期不定时更新,希望能分享出优质的文章! 1、《linux内核数据结构分析之哈希表》…

冲刺十五届蓝桥杯P0006平面切分

文章目录 题目思路代码总结 题目 平面切分 思路 这道题是一个思维题把,之前没有接触过平面几何的知识,做起来感觉还是比较难的,用到的set集合和自己创建一个类 首先我们知道,一根直线A是可以将平面切分成两块的,如…

如何能优化网站开展速度

随着互联网技术的飞速发展,网站加载速度已经成为一个不可忽视的关键要素。 当您的网站速度缓慢,不仅会影响用户的访问体验,还可能导致用户的流失。以下是一些创新的技巧和策略,帮助您提升网站打开速度。 一、在图像压缩上做文章 …

ArcGIS JS API 演示Demo

ArcGIS JS API Demo演示地址 https://ralucanicola.github.io/JSAPI_demos/ ArcGIS JS API Demo下载地址 https://github.com/RalucaNicola/JSAPI_demos

PyTorch入门教学——使用PyCharm创建一个PyTorch项目

首先需要创建好PyTorch的虚拟环境,步骤:PyTorch入门教学——简介与环境配置-CSDN博客打开PyCharm,新建项目,选择项目的存放位置。选择先前配置的解释器,也就是虚拟环境中的解释器。(记住创建的虚拟环境所在…

1、资源包下载

1 、百度云盘永久下载地址 : 链接: https://pan.baidu.com/s/13pBco75qXU6bLxlTtZ29TQ 提取码: ixkg 2 、官方下载地址: https://dev.mysql.com/downloads/mysql/ 3 、注意:下载时候要选择自己的系统和对应的电脑 CPU 位数&a…

Multisim14 逻辑分析仪的使用教程(打开关闭+详细具体)

一、打开逻辑分析仪 总结:根据自身的分析需要选择分析的参数,保存并允许结果。然后根据参数的设置,看运行结果是否满足项目分析需要。 二、 关闭逻辑分析仪 最后,再次运行即可关闭逻辑分析仪了! 总结:如果…