zoukankan      html  css  js  c++  java
  • 面向对象

    约束

    class BaseMessage(object):
        def send(self):
            """
            必须继承BaseMessage,然后其中必须编写send方法.用于完成具体业务逻辑
            """
            raise NotImplementedError(".send() 必须被重写")
            #raise Exception(".send() 必须被重写")
    
    
    BaseMessage 类用于约束,约束其派生类:保证派生类中必须编写send方法,不然执行可能会报错
    View Code

    Python的约束:

    Python的约束主要通过抽象类和主动抛出异常来实现

    接口:

       接口是一种数据类型,接口中不允许在方法内部写代码,只能约束继承它的类必须实现接口中定义的所有方法.

    抽象类:

    from abc import ABCMeta, abstractmethod
    
    
    class Base(metaclass=ABCMeta):
    
        def f1(self):
            print("正常方法")
    
        @abstractmethod
        def f2(self):
            print("抽象方法")
    
    
    class Foo(Base):
    
        def f2(self):
            print(666)
    抽象类

    自定义异常

    class Base:
        """
        必须继承Base,然后必须编写其中的f1方法
        """
        def f1(self, a1):
            raise NotImplementedError("相应的提示信息")
    
    
    class Foo(Base):
        def f1(self, a1):
            pass
    主动抛出异常

    hashlib:

    主要用于加密(md5),为了防止撞库,所以一定要加盐,因为加密后不可以反解,因此进行校对时可以使用密文进行,还需注意的是md5加密的是字节,所以需要用encode进行编码

    import hashlib
    
    salt = b"asdfghjkl;ei"
    
    
    def func(pwd):
        # 实例化对象
        obj = hashlib.md5(salt)
        # 写入加密字节
        obj.update(pwd.encode("utf-8"))
        # 获取密文
        return obj.hexdigest()
    
    
    name = input(">>>")
    pwd = input(">>>")
    if name == "123" and func(pwd) == "fb5e8b7ebcd71d0ac0ecf803ff8aba74":
        print("登陆成功")
    View Code

    logging:日志文件

    logger = logging.basicConfig(filename='xxxxxxx.txt',
                                 format='%(asctime)s - %(name)s - (levelname)s -%(module)s:  %(message)s',
                                 datefmt='%Y-%m-%d %H:%M:%S',
                                 level=30)
    # 参数设置
    # 等级
    # logging.debug('x1') # 10
    # logging.info('x2')  # 20
    # logging.warning('x3') # 30
    # logging.error('x4')    # 40
    # logging.critical('x5') # 50
    # logging.log(10,'x6')
    
    # 自定义日志
    logging.error('x4')
    日志文件

    获取当前错误的堆栈信息

    import traceback
    
    def func():
        try:
            a = a +1
        except Exception as e:
            # 获取当前错误的堆栈信息
            msg = traceback.format_exc()
            logging.error(msg)
    func()
    View Code
    import logging
    
    
    # 创建一个操作日志的对象logger(依赖FileHandler)
    file_handler = logging.FileHandler('log1.log', 'a', encoding='utf-8')
    file_handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s"))
    
    logger1 = logging.Logger('s1', level=logging.ERROR)
    logger1.addHandler(file_handler)
    
    
    logger1.error('1')
    
    
    
    # 在创建一个操作日志的对象logger(依赖FileHandler)
    file_handler2 = logging.FileHandler('log2.log', 'a', encoding='utf-8')
    file_handler2.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s"))
    
    logger2 = logging.Logger('s2', level=logging.ERROR)
    logger2.addHandler(file_handler2)
    
    logger2.error('2')
    自定义日志
  • 相关阅读:
    通用页面调用APP 互通
    HTML5[5]:在移动端禁用长按选中文本功能
    JAVA 中的基础
    手机访问PC网站自动跳转到手机网站代码
    自适应的设置字体的方式
    localStorage 与 sessionStorage
    《高级程序设计》3 基本慨念
    javascript基础
    jQuery技巧
    jQuery性能优化
  • 原文地址:https://www.cnblogs.com/wangjun187197/p/9579040.html
Copyright © 2011-2022 走看看