• #

    1 所有的反射 都是用字符串 操作对象的属性
    2 __名字 在类的外部就不能用了
    3 私有化的 不能被子类继承,也不能在其他任何类中调用 
    程序的逻辑问题
        # 1. 不可以对某些计算结果直接赋值
        # 2. 一般是通过对计算结果产生影响的属性进行重新赋值
    
    反射 -- 使用字符串的方式,操作对象的属性(对象属性,类的动态属性(方法))
    # 在python中 一切皆对象(类也是对象,对象也是对象,模块也是对象)
    import hashlib  #加密不解密 摘要算法
    # hashlib.md5  32位  快捷简单 通用
    # hashlib.sha1  40位  方兴未艾
    md5_obj = hashlib.md5() #里面可以加盐  b'beijing'
    md5_obj.update('zhangchen'.encode('utf-8')) #只接受bytes类型
    ret = md5_obj.hexdigest()  #hex 16进制 digest消化  16进制的处理结果
    print(ret)
    #暴力破解 撞库 cmd5.com 网站
    反射的另外两个内置函数
        setattr
            a.b= c
            setattr(a,'b',c)
        delattr
            del a.b
            delattr(a,'b')
    两个内置函数
        A,B(A),C(B)
        type(c_obj) is C    只能判断出和C的关系
        isinstance(c_obj,A) 不仅能判断C,还有AB
        issubclass(C,B)
    内置方法
        __new__  构造方法
        __init__ 初始化方法
        __call__ 对象()
        __del__  析构方法 在del对象之后,删除对象之前执行
        __str__  能在打印对象时,不输出无用的内存地址,输出你需要的格式化字符串
        __repr__ %r,repr(),做__str__方法的备胎
        __eq__(self,other)   obj1 == obj2
        __len__  len(obj) # ==>  obj.__len__()
        item 使用中括号的形式操作对象,需要完成对应的item系列的方法
        __getitem__   obj['xxx']       ==> obj.xxx
        __setitem__   obj['xxx'] = yyy ==>obj.xxx=yyy
        __delitem__   del obj['xxx']   ==>del obj.xxx
    NameError  名称错误
    AttributeError 属性错误
    ValueError  值错误
    StopIteration 迭代错误
    IndexError  索引错误
    AssertionError  断言错误
    # 断言
    assert 1==2   # assert bool/条件 如果是False就报错,如果是True就继续执行
    print('继续执行')
    断言
    try:
        有可能出错的代码
    except:
        处理异常
    else:
        pass
    finally:
        无论如何都会执行的代码
    异常
    加固定的盐
    md5_obj = hashlib.md5('任意的字符串'.encode('utf-8'))
    md5_obj.update('123456'.encode('utf-8'))
    ret = md5_obj.hexdigest()
    print(ret)
    加固定的盐
    # 动态加盐 - 最安全的存储密码的方式
    username = input('账号: ')
    pwd = input('密码: ')
    md5_obj = hashlib.md5(username.encode('utf-8'))
    md5_obj.update(pwd.encode('utf-8'))
    ret = md5_obj.hexdigest()
    print(ret)
    
    # sha1 40位长度  
    # md5 32位长度
    动态加盐
  • 相关阅读:
    [Exception] 当前 TransactionScope 已完成
    C# Lazy<T>(转)
    C# 基础概念之延迟加载
    .Net语言中关于AOP 的实现详解
    DataReader、Table、DataSet和Entity相互转化
    ASP.NET Core 2.0 : 五.服务是如何加载并运行的, Kestrel、配置与环境(转)
    ASP.NET Core 2.0 : 四. _Layout与_ViewStart(转)
    ASP.NET Core 2.0 : 三. 项目结构(转)
    ASP.NET Core 2.0 : 二. 开发环境(转)
    ASP.NET Core 2.0 : 一. 概述(转)
  • 原文地址:https://www.cnblogs.com/zhangchen-sx/p/10997083.html
Copyright © 2020-2023  润新知