python中,单例和异常

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
返回对象的引用就是返回对象所在内存空间的地址

class MusicPlayer:
def __new(cls,*args,**kwargs): #对new重写
#1.创建对象时,new方法会被自动调用
print(“创建对象,分配空间”)
#2.为对象分配空间(直接继承父类,即原new方法)
instance=super().new(cls)
#3.返回对象应用
return instance
#没有return这一步,解释器找不到对象的引用,无法对对象初始化。
#最后就会输出一个空对象

#一个单例

class MusicPlayer:
#记录第一个被创建对象的引用,这是类属性
instance=None

    def __new(cls,*args,**kwargs):
            #1.判断类属性是否为空对象
            if cls.instance is None:
                    #2.继承父类,为第一个对象分配空间
                    cls.instance=super().__new__(cls)
            return cls.instance

    def __init__(self):  #这是对象初始化方法,没有cls参数,所以得有下面第一步
            #1.判断是否执行过初始化动作
            if MusicPlayer.init_flag:
                    return
            #2.没有初始化过,执行初始化
            print("...")

            #3.修改标记
            MusicPlayer.init_flag=True

try:
尝试执行的代码
except:
出错时执行的代码

。。。。(无论出不出错都要执行的代码)

要捕获未知错误(因为很难预先想好所有可能的错误类型)的话
在最后加上
except Exception as result:
print(“位置错误%s” %result)

参数:*args:多值元组参数
**kwargs:多值字典参数

def input_password():
#提示用户输入密码
pwd=input(“请输入密码”)

    #2.判断密码长度 >=8,返回用户输入的密码
    if len(pwd) >=8:
            return pwd

    #3.如果<=8,主动抛出异常
    print("主动抛出异常")

    #I.建立异常对象
    ex=Exception("密码长度不够")

    #II.主动抛出异常
    raise ex

try:
print(input_password())
except Exception as result:
print(result) #这里result 就是Exception

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值