返回对象的引用就是返回对象所在内存空间的地址
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