美文网首页
Python基础-day14

Python基础-day14

作者: 陈small末 | 来源:发表于2019-01-12 14:41 被阅读0次

    list

    ​ 枚举

    ​ 异常

    ​ 异常处理

    ​ 自定义异常

    ​ 单例设计模式(23设计模式 数据结构 算法 操作系统原理 网络工程原理)

    枚举类型

    ​ 什么是枚举:我们可以一一列举的有限集合

    ​ 月份:(1到12月) 四季:春夏秋冬 生肖:鸡狗猴兔

    枚举类型 在python程序里不是基本的数据类型

    from enum import Enum ,IntEnum ,unique

    具体实现:

    ​ 我们如果想搞一个自己的枚举类型 我们可以写一个继承自Enum或者IntEnum的一个类

    from enum import Enum, IntEnum, unique
    
    @unique
    class Week(Enum):
        MON = "周一"
        TUS = "周二"
        WEN = "周三"
        THU = "周四"
        FRI = "周五"
        SAT = "周六"
        SUN = "周天"
    
    # 访问
    res = Week.MON.value
    print(res)
    

    要求枚举类型的值都是整数类型或整数值的字符串 那么我们就继承IntEnum

    示例如下

    class HalfYear(IntEnum):
        JAN = 1
        FEB = 2
        MAT = 3
        API = 4
        MAY = 5
        JUN = "6"
    
    print(HalfYear.JUN.value)
    
    

    异常

    ​ 程序里 一些不期而遇的 意想不到的问题 导致程序崩溃

    常见的异常:

    NameError: name 'a' is not defined

    ValueError: invalid literal for int() with base 10: 'ss'

    TypeError: must be str, not int

    IndexError: list index out of range

    SyntaxError: invalid syntax

    AttributeError: 'dict' object has no attribute 'append'

    ZeroDivisionError: division by zero

    FileNotFoundError: [Errno 2] No such file or directory: 'hehe'

    异常处理

    try:
        是我们想要捕获异常代码段(有可能出现问题的地方)
    except ValueError as 变量名:
        如果程序出现异常下边的代码将会被执行 如果程序没出错 那么下边的代码 不会被执行
        print("错误", 变量名)
    变量名里 包含了我们的错误信息
    

    except可以写多个并且 只要有一个被捕获的类型满足条件 那么其他的except将不会被执行 示例如下

    try:
        # int("9o")
        print(a)
    except ValueError as e:  在python2里as可以使用,来替代 python3不可以
        print("错误", e)
    except NameError as e:
        print("变量不存在", e)
    except IndexError as e:
        print("下标错误")
    else:
        当程序不出错的时候 会进入下边的代码
    finally:
        不管程序是否正常 最后都需要执行此处的代码
    

    当我们无法确定到底会出什么异常 那么我们就使用Exception这个类(常见异常的基类)

    自己手动抛出异常

    raise 异常类型的类(提示)

    raise Exception("字符串位数不正确")
    

    自定义异常

    当系统定义的异常类型 不够用的时候 我们可以写一个继承自Exception的一个类

    class LengError(Exception):
    
        def __init__(self, msg):
            # super().__init__(msg)
            self.msg = msg
    
        def __str__(self):
            return "[LengError]:详情:{}".format(self.msg)
    
    

    使用

    raise LengError("长度不够")
    或者
    a = "12"
    try:
        if len(a) != 3:
            raise LengError("呵呵")
    except LengError as e:
        print(e,"___")
    

    单例设计模式(23程序设计模式)

    生活里:微信:在跟别人视频的时候 还可以发消息 朋友圈 也就是在微信的软件 多处操作的时候 那个用户 一直都是一个人 也就是你

    ​ 皇上:太上皇不算 全国只有一个

    程序里:

    ​ 不管我们如何去实例化我们的对象 出来都是一个

    单例的实现

    装饰器来实现(重点)

    def singlton(cls):
        # count = 0
        instance = None
        def inner(*args, **kwargs):
            nonlocal instance
            # if instance == None:
            #     instance = cls(*args, **kwargs)
            #     return instance
            # else:
            #     return instance
            instance = instance if instance else cls(*args, **kwargs)
            return instance
    
        return inner
    
    @singlton
    class Pet:
    
        def __init__(self,name):
            self.name = name
    
        def run(self):
            print("runing")
    
    a = Pet("a")
    b = Pet("b")
    # print(id(a), id(b))
    print(a.name, b.name)
    

    练习:

    ​ 乾隆带和珅与纪晓岚 去东莞玩

    ​ 皇帝类

    ​ 单例模式

    ​ 大臣类:

    ​ 不使用单例

    ​ 地点类

    ​ 名字

    from 单例练习.decorator import singlton
    
    @singlton
    class Emperor:
        def __init__(self, name):
            self.name = name
    
        def play(self, minister1, minister2, place):
            my_str = "{}带{}与{},去{}玩~~~".format(
                self.name,
                minister1.name,
                minister2.name,
                place.name
            )
            print(my_str)
    
    
    class Minister:
    
        def __init__(self, name):
            self.name = name
    
    class Place:
    
        def __init__(self, name):
            self.name = name
    
    

    相关文章

      网友评论

          本文标题:Python基础-day14

          本文链接:https://www.haomeiwen.com/subject/kkhvrqtx.html