单例模式,异常和模块相关

单例模式

单例模式就是让类创建的对象,在系统中只有唯一的实例
__new__方法是object类内置的静态方法
作用:1. 在内存中为对象分配空间 2.返回对象的引用


    class MusicPlayer(object):

    def __init__(self):
        print("播放器初始化")

    def __new__(cls, *args, **kwargs):
        # 创建对象时,new方法会被自动调用
        # 需要返回对象的引用
        # 为对象分配空间
        return super().__new__(cls)


单例模式演示

class Garbag(object):
    # 记录第一个创建对象的引用
    instance = None

    # 记录是否执行过初始化动作
    init_flag = False

    # 单例模式的思路:定义一个空的类属性,如果第一次初始化为空,就返回一个新的引用
    # 如果之后再初始化,直接判断类属性是否为空,不为空直接返回类属性保存的引用
    def __new__(cls, *args, **kwargs):
        if cls.instance is None:
            cls.instance = super().__new__(cls)
            return cls.instance
        else:
            return cls.instance

    def __init__(self):
        if Garbag.init_flag:
            return
        Garbag.init_flag = True
        print("初始化")

异常

异常捕获

try:
    # 不能确定的代码
    num = int(input("请输入一个整数"))
except:
    # 如果异常要执行的代码
    print("请输入正确整数")
else:
	# 没有异常才会执行
	print("hello world")
finally:
 	# 正常程序代码,无论有无异常,都会执行
    print("*" * 50)

错误类型捕获
格式: except 错误类型:
except (错误类型1,错误类型2):

try:
    num = int(input("请输入一个整数:"))

    result = 8 / num

    print(result)

except ZeroDivisionError:
    print("除0错误")
except ValueError:
    print("请输入整数")

# 判断未知的错误
except Exception as err_result:
    print("%s——未知错误" % err_result)

抛出异常

def input_pwd():
    password = input("请输入密码")

    if len(password) >= 8:
        return password
    else:
        # 创建一个异常对象
        ex = Exception("密码长度不够")
        raise ex


try:
    print(input_pwd())
except Exception as result:
    # 直接将异常的字符串输出
    print(result)

引用模块

import 模块名
# 别名应该用大驼峰命名法
import 模块名 as 别名

#也可以直接使用from导入模块的部分工具(全局变量,函数,类)
# 从不同的模块导入相同的函数,后导入的函数会覆盖之前的函数,可以通过起别名分辨
from long_name_demo import Dog
dog =Dog()
# 可以一次性导入所有工具(不推荐使用)
from 模块名 import *
# 可以通过__file__查看模块的完整路径
print(__file__)
# 可以查看模块的名称
print(__name__)

导入模块时,直接可以执行的代码都会直接执行
但是,这些测试代码并不是我们导入模块时想要的
所以,需要对代码进行改变

def main():
	# 测试代码
	pass
if __name__ == "__main__":
	main()

包的概念

如果我们需要导入很多模块时,可以将模块保存至包内,直接导入包
包的目录下有一个py文件,init.py
init.py文件用来保存希望外界访问的模块
from . import 模块名
包的发布和安装
引用IT黑马
在这里插入图片描述
PIP安装第三方模块

pip3 install 模块名
pip3 uninstall 模块名
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值