python中的单例、异常捕获和重写new方法等

# 07_Python基础到实战一飞冲天(三)-python面向对象(七)--单例和异常 07_Python基础到实战一飞冲天(三)-python面向对象(七)--单例和异常 061-单例设计模式思路分析 062-单例设计模式代码实现 063-初始化动作只执行一次 064-异常的概念以及抛出异常的原因 065-简单的异常捕获 066-根据错误类型捕获异常 067-捕获未知错误 068-异常捕获的完整语法 069-异常的传递性 070-主动抛出异常的应用场景 阅读详情

一、python中的单例

(多个对象一个地址)

class MusicPlayer(object):      #object:基类

    #记录第一次被创建的引用
    instance = None

    def __new__(cls, *args, **kwargs):

        #1.判断类属性是否为空对象
        if cls.instance is None:
            #2.调用父类的方法,为第一个对象分配空间
             cls.instance = super().__new__(cls)
        #3.返回类属性保存的对象的引用
        return cls.instance


#创建多个对象
player1 = MusicPlayer()
print(player1)

player2 = MusicPlayer()
print(player2)

二、python中的重写__new__方法

class MusicPlayer(object):

    def __new__(cls, *args, **kwargs):

        #1.使用类名创建对下的时候,new方法被自动调用的
        print("创建对象分配空间")

        # 2.为对象分配空间
        instance = super().__new__(cls)
        # 3.返回对象的引用
        return instance
    
    def __init__(self):
        print("播放器开始初始化")


#创建对象
a = MusicPlayer()
print(a)

三、python中初始化方法执行一次

class MusicPlayer(object):

    #记录第一次被创建的引用
    instance = None

    #记录是否执行过初始化的动作,假设没有执行过
    init_flag = False

    def __new__(cls, *args, **kwargs):

        #1.判断类属性是否为空对象,如果是,调用父类的__new__方法:为对象分配空间,返回对象的引用
        if cls.instance is None:
            #2.调用父类的方法,为第一个对象分配空间
            cls.instance = super().__new__(cls)
        #3.返回类属性保存的对象的引用
        return cls.instance

    def __init__(self):

        #1.判断是否执行过了初始化动作
        if MusicPlayer.init_flag:
            return

        #2.没有执行过的时候,再去执行初始化动作
        print("初始化播放器")

        #3.修改类属性的标记
        MusicPlayer.init_flag = True
#创建多个对象
player1 = MusicPlayer()
print(player1)

player2 = MusicPlayer()
print(player2)

player3 = MusicPlayer()
print(player3)

四、python中的异常捕获

1.完整格式

  try:
       #需要进行测试的代码
    
    except ValueError:
        #测试信息错误为:ValueError时,需要提示的代码
    
    
    except Exception as result:
       #未知错误:result
    
    else:
        #尝试成功的代码
    
    finally:
        #无论是否出现错误都会去执行的代码
    
    
    不管上述结果如何,一下代码都会执行
    print()
使用__new__方法实现单例模式 在Python中,__new__是用来创造一个类的实例的,而__init__是用来初始化这个实例的。 立即下载

相关推荐

AI影像组学在结直肠癌诊疗中的应用:从特征提取到临床决策

影像组学通过高通量计算从医学影像中提取定量特征,揭示肿瘤内部的微观生物学行为,这些特征反映了纹理异质性、形状不规则度等影像表型。其核心原理在于将图像数据转化为可分析的数字特征,结合机器学习算法进行模式识别,从而实现对疾病状态的精准预测。这一技术的价值在于能够无创、定量地评估肿瘤特性,为精准医疗提供关键支持。在临床实践中,AI驱动的影像组学模型广泛应用于结直肠癌的诊疗全链条,包括肿瘤良恶性鉴别、基因突变预测、治疗反应评估和预后分析等场景。通过整合影像组学特征与临床数据,可以构建预测模型,辅助医生进行更准确的诊

weixin_28295799的博客 409

学习python:异常处理

简介 本文主要介绍python的异常处理机制,包括: 如何使用异常处理 异常的传递 抛出异常 由于比较简单,因此这里介绍的不是很详细。 有一些代码来源于网络。 如何使用异常处理 所有的面向对象语言对异常的处理方式大同小异,在python中的处理异常的结构如下: try: # 可能出错的程序 except (Exception1, Exception2): # 注意,pytho...

newxuyangcao 311

异常数据处理——3σ原则、箱线图

异常数据处理——3σ原则、箱线图 用不包括异常值的剩余数据的均值替换、删除DataFrame中某列有异常值的整行等方法

杨老师的小跟班(*∩_∩*) 9033

python之Exception

TypeError——当我把字符串和数字相加的时候 NameError——无法识别的标识符 KeyError——字典通过键值对获取值时,没有给定的键 ValueError: I/O operation on closed file.读文件内容的时候,前面已经关掉了文件而没有注意 FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'xx.txt' -> ...

shuzk的博客 972

思科模拟器CIsco Packet Tracer利用三层交换机实现VLAN间路由

版权声明:如果对大家有帮助,大家可以自行转载的。 1.技术原理: 三层交换机具备网络层的功能,实现 VLAN 相互访问的原理是:利用三层交换机的路由功能,通过识别数据包的 IP 地址,查找路由表进行选路转发,三层交换机利用直连路由可以实现不同 VLAN 之间的相互访问。三层交换机给接口配置 IP 地址。采用 SVI(交换虚拟接口)的方式实现 VLAN 间互连。SVI 是指为交换机中的VLAN 创建...

qq_37992321的博客 1万+

2019年电赛D题《简易电路特性测试仪》全过程

2019年全国大学生电子设计大赛D题《简易电路特性测试仪》硬件部分及故障分析

zzhao2580的博客 5万+

Python单例模式【详细】:(概念、__new__方法概念与重写、单例设计模式应用场景、代码实现、只执行一次初始化动作)

设计模式是前人工作的总结和提炼,通常被人们广泛的设计模式都是针对某一特定的问题的成熟的解决方案。使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码的可靠性。单例设计模式让类创建的对象在系统中只有唯一的一个实例,每一次执行 类名() 返回的对象,内存地址是相同的。

weixin_48728769的博客 1028

VMware VSAN 高级参数介绍(测试用)

VSAN 的策略驱动让我们看到了VSAN无穷的潜力,其设计思路相当新颖,在一个基础资源池上使用策略就能实现不同对象的区分服务,而目前没有其他厂家能到VMware这样的高度。 VSAN 呈现给用户配置很简单,但实际上设计及后台比较复杂。笔者无意间发现了VSAN的隐藏高级参数设置,有很多好玩的选项想分享出来。这些参数全部是针对每主机进行设置的。VSAN 中有很多默认设置,这些设置应该都是研发人员多次测试得出的最优值,修改可能导致环境异常,并不建议修改! 目录 参数1:全闪配置下 SSD 写缓存最大.

山水牧羊 2031

python3自定义异常重写_Python3入门之抛出自定义异常

版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.youkuaiyun.com/qq_40877371/article/details/99710830Python3 入门之抛出自定义异常在Pyhton开发中,我们可以用raise语句来引发一个异常。异常/错误对象必须有一个名字,且它们应是一个异常的实例或者是 Excepti...

weixin_35439783的博客 508

深度拆解 ‘High-Frequency Trading’ (HFT) 系统:解析如何在 100 纳秒内完成从网卡到 C++ 策略的响应

在100纳秒内完成从网卡到C++策略的响应,这是一项对技术栈每一个层面都进行极限优化的系统工程。它要求我们深入理解计算机体系结构、操作系统、网络协议和C++语言的底层机制。从物理距离的极致缩短,到高性能网卡和内核旁路技术,再到C++代码中每一个字节、每一个CPU周期的精打细算,HFT系统展现了人类对计算速度的永恒追求。这项技术不仅仅应用于金融交易,其背后的低延迟理念和实现方法,如DPDK、无锁编程、硬件加速等,正在逐渐渗透到其他对延迟敏感的领域,例如电信网络、边缘计算和工业自动化。

weixin_41455464的博客 1039

cesium vue2/vue3教程目录导航

以下是本专栏目录导航,送完整项目源码(拒绝单页源码),可以直接运行,全部配置免费视频教程(B站)。

qq_29384639的博客 4317

python的__new__方法及重写__new__方法

__new__方法 使用类名()创建对象的时候,python解释器首先会调用__new__方法为对象分配空间 __new__是一个由object基类提供的内置的静态方法,主要作用有两个: 1.在内存中为对象分配空间 2.返回对象的引用 python解释器获得对象的引用后,将引用作为第一个参数,传递给__init__方法 方法:重写__new__方法的代码非常固定 重写__new_...

fjswcjswzy的博客 4436

2026年3月GESP真题及题解(C++七级):物流网络

2026年3月GESP真题及题解(C++七级):物流网络

王老师青少年编程 1126

Python 单例模式、异常 day 08 am

单例 目标 单例设计模式 new 方法 Python 中的单例 单例设计模式 设计模式 设计模式 是 前人工作的总结和提炼,通常,被人们广泛流传的设计模式都是针对 某一特定问题 的成熟的解决方案 使用 设计模式 是为了可重用代码、让代码更容易被他人理解、保证代码可靠性 单例设计模式 目的 —— 让 类 创建的对象,在系统中 只有 唯一的一个实例 每一次执行 类名() 返回的对象,内存地址是相同...

龙龙的博客 223

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

python中使用单例模式在整个程序中只创建一个数据库连接,节省资源

单例模式:该代码使用了单例模式保证整个程序中只会创建一个数据库连接。这样可以避免重复创建连接资源,提升效率。 错误处理:使用 try...except 捕获连接失败的情况,并通过日志记录错误信息,然后抛出异常,确保问题不会被忽略。 日志记录:通过 loguru 的 logger 对象,详细记录了连接的成功与失败状态,方便排查问题。 实际场景举例: 假设你的数据库地址为 "mongodb://192.168.1.100:27017",第一次执行 MongoDatabaseConnector() 时: 程序检查

陈开心的博客 1148

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

python异常捕获

小啾的python异常捕捉,处理。捕捉一个异常,多个异常,所有异常,自定义异常,raise主动触发异常,及try...except...else...finally...关键词逻辑。

侯小啾技术博客 3180

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Python面向对象:重写、单例设计、异常

如果子类未重写父类中的函数,则子类可以继承父类中的函数如果子类中重写了父类中的函数,子类对象将默认调用子类中重写之后的函数子类重写函数的时候,如果仍然需要使用父类中函数的功能,则可以在子类函数中调用父类函数在子类函数中调用父类函数的三种方式super(当前类,self).__init__(参数列表)super().__init__(参数列表)父类.__init__(self,参数列表)# 父类# 子类1:如果子类未重写父类中的函数,则子类可以继承父类中的函数pass。

巧克力配酸奶的博客 1014

14Python单例与异常

类名()__new__

dotnethello的博客 2148

关于Python常见的几种异常捕获

今天看到许多小伙伴问了一些关于Python异常捕获怎么办的问题,决定把自己整理的关于Python异常捕获的教程分享给大家。希望这个教程能够对大家起到帮助,喜欢的可以点赞评论噢! 1.捕捉一个异常 捕捉一个异常 以用0作为除数会得到ZeroDivisionError异常为例, print(1/0) 为例程序的持续执行,不因该异常而中止, 遂对该异常进行处理,使异常时输出该异常内容: try: print(1/0) except ZeroDivisionError as e: pr

m0_67354902的博客 1万+

Python异常及处理方法总结

调试Python程序时,经常会报出一些异常,异常的原因一方面可能是写程序时由于疏忽或者考虑不全造成了错误,这时就需要根据异常Traceback到出错点,进行分析改正;另一方面,有些异常是不可避免的,但我们可以对异常进行捕获处理,防止程序终止。 1 异常类型 1.1 Python内置异常 Python的异常处理能力是很强大的,它有很多内置异常,可向用户准确反馈出错信息。在Python中,异常也...

polyhedronx的博客 7万+

python 捕获多个异常_Python捕获多个异常

python捕获多个异常We can use a try-except block to catch exceptions and process them. Sometimes we call a function that may throw multiple types of exceptions depending on the arguments, processing logic et...

从零开始的教程世界 1万+

flask重写异常方法进行全局异常捕获

在实际开发中,我们需要捕获各种异常,有时候有需要自己抛出异常,自行捕获并return信息给前端,这可能会造成代码冗余。所以我们可以通过重写异常类来进行异常捕获 以 HTTPException 为例: class APIException(HTTPException): code = 400 message = 'Sorry, there was an unexpected error(*^v^*)' def __init__(self, msg=None, code=No..

贵有恒,何必三更眠五更起;最无益,只怕一日曝十日寒 1256

python捕获所有异常状态_python捕获异常及方法总结

PythonPython开发Python语言python捕获异常及方法总结 调试Python程序时,经常会报出一些异常,异常的原因一方面可能是写程序时由于疏忽或者考虑不全造成了错误,这时就需要根据异常Traceback到出错点,进行分析改正;另一方面,有些异常是不可避免的,但我们可以对异常进行捕获处理,防止程序终止。1 异常类型1.1 Python内置异常Python的异常处...

weixin_39586683的博客 1793

python捕获异常及方法总结

调试Python程序时,经常会报出一些异常,异常的原因一方面可能是写程序时由于疏忽或者考虑不全造成了错误,这时就需要根据异常Traceback到出错点,进行分析改正;另一方面,有些异常是不可避免的,但我们可以对异常进行捕获处理,防止程序终止。 1 异常类型1.1 Python内置异常Python的异常处理能力是很强大的,它有很多内置异常,可向用户准确反馈出错信息。在Python中,异常也是对象,...

weixin_30237281的博客 1361

python捕获全局异常统一管理_python 全局异常捕获

需要用到sys.excepthook1、 全局异常钩子python的程序在运行时,如果遇到异常,需要程序员使用try...catch进行捕获,那么那些没有被捕获的异常,python是如何处理的呢?对于没有被捕获的异常,python统一用sys.excepthook 这个函数来处理,发生异常时,程序中断并输出很多异常信息。python允许你重写这个方法,来实现你自己对异常的处理,下面的实例,向你展示...

weixin_40007515的博客 3214
上一篇: python中文件的三大操作、模块原则等
下一篇: python中的递归函数
Terminator_HWW
博客等级 码龄9年 17粉丝 43原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值