python 反射、md5加密

一、issubclass,type,isinstance

  1、issubclass :判断xx类是否是yyy类型(包括子类),用于类之间的判定

class GrandF:
    pass
class Father(GrandF):
    pass
class Son(Father):
    pass
print(issubclass(Son,Father))#True
print(issubclass(Son,GrandF))#True 可以隔代判断类型,子类属于父类的父类
print(issubclass(Father,Son))#False 父类不属于子类

  2、type :精确的返回数据类型

# type( ) 精确的返回数据类型
class Foo:
    pass
class Bar(Foo):
    pass
b=Bar()
print(type(b))#<class ‘__main__.Bar‘>(返回离自己最亲的那个数据类型)
print(type(Bar))#<class ‘type‘>

  3、isinstance:也可以判断xx是yyy类型的数据,但是没有type那么精准,可以往上判断

#isinstance
class GrandF:
    pass
class Father(GrandF):
    pass
class Son(Father):
    pass
s=Son()
f=Father()
g=GrandF()
print(isinstance(s,Son))#True 儿子是属于儿子类型
print(isinstance(s,Father))#True 儿子也属于父亲类型的
print(isinstance(s,GrandF))#True 儿子也属于爷爷类型的
print(isinstance(g,Father))#False
# isinstance 可以判断对象属于xx类型,可以网上判断,不能往下判断

二、区分函数和方法

  1、function:函数

    method:方法

  2、判断方法  

# 判断方法还是函数
from types import MethodType,FunctionType
...
print(isinstance(xx,MethodType)) #返回True则为方法
print(isinstance(xx,FunctionType)) #返回True则为函数

  3、总结

    1、类方法:不论什么情况,都是方法

    2、静态方法:不管什么时候,都是函数

    3、实例方法:如果是实例访问,则是方法;如果是类名访问就是函数

三、反射

  1、外部文件如:daniu.py

def chi():
  print("???顿吃100个螃蟹")
def he():
  print("???顿喝100瓶可乐")
def la():
  print("??不?拉")
def shui():
  print("???次睡?年")wife="猪小妹"

  2、引入外部文件 import

import daniu
while 1:
    s=input("输入你想要测试的功能:")
    if hasattr(daniu,s):#判断daniu文件里面是否存在s功能
        fn=getattr(daniu,s)#如果存在,获取句柄
        fn()#执行s功能
    

  3、反射常用的命令

hasattr(对象,属性(字符串)) 查看对象中是否存在该属性,如果存在返回True
getattr(对象,属性(字符串)) 获取对象中xxx属性,并返回
setattr(对象,属性(字符串),值) 1、如果对象中存在该属性,则直接赋值
                                        2、如果不存在,则新建该属性,并赋值
delattr(对象,属性(字符串)) 从对象中删除该属性

四、md5加密

  1、准备点盐(SALT=b‘ adfsgghhjh) --------------------(非必需步骤)

  2、流程:

import hashlib
obj=hashlib.md5(加盐)
obj.update(铭文的,bytes)
obj.hexdigest( )获取密文

  3、实例:账户登录加密

# 主要应用于密码的加密
import hashlib
# 盐
SALT=b"ssfSGDF456AGSas"

# 制作加密函数
def jiami(connent):
    obj=hashlib.md5(SALT) #创建md5对象
    obj.update(connent.encode("utf-8")) #必须使用bytes类型铭文
    return obj.hexdigest()

# # 注册
# username=input("请输入用户名:") #joinl
# passwd=input("请输入密码:") #1234567
# passwd=jiami(passwd)
# print(passwd) #504510efd4c441addb07d1371442557e

uname="joinl"
upwd="504510efd4c441addb07d1371442557e"

# 登陆
username=input("请输入用户名:")
passwd=input("请输入密码:")
if uname==username and jiami(passwd)==upwd:
    print("登陆成功")
else:
    print("登陆失败")

  

  

原文地址:https://www.cnblogs.com/angle6-liu/p/9938496.html

时间: 2024-10-08 23:46:12

python 反射、md5加密的相关文章

python 之MD5加密

#!/usr/bin/env python # -*- coding: utf-8 -*- #实现MD5加密 #加密之后再存储密码,这样相对安全 import hashlib import shelve ''' #第一种实现 def sec_md(passwd):     hash = hashlib.md5() #创建一个MD5对象     hash.update(passwd) #用update方法,使其通过md5方式加密     return hash.hexdigest() #第二种实现

python实现MD5加密

简介首先,老规矩,下代码前先了解md5的几个函数 python中digest()和hexdigest()区别: 其中 hash.digest()返回摘要,作为二进制数据字符串值 hash.hexdigest()返回摘要,作为十六进制数据字符串值 源码如下: #md5进行数据的加密 import hashlib #md5加密 def md5sum(str): m = hashlib.md5() #创建一个hashlib.md5()对象 m.update(name.encode("utf8"

python进行md5加密

代码函数 import hashlib def md5(str): m = hashlib.md5() m.update(str) return m.hexdigest() f = open('idfa.csv','r') result = open('test.csv','w') for line in f.readlines(): encrypt_code = md5(line) #print encrypt_code result.write(encrypt_code+'\n') f.cl

Python学习心得(五) random生成验证码、MD5加密、pickle与json的序列化和反序列化

# -*- coding:utf-8 -*- import random as rd #验证码 import hashlib as hsl #MD5加密 import pickle,json #pickle与json序列化 #print rd.randint(1,5) #print help(range) #print help(rd.randint) #随机生成6位验证码: code = [] for i in range(1,7): if i == rd.randint(1,6): code

Python MD5加密

简单介绍一下使用Python内置哈希库对字符串进行MD5加密的方法: 首先是导入MD5加密所需模块: import hashlib 然后创建md5对象: m = hashlib.md5() 传入需要加密的字符串进行MD5加密: m.update("str4MD5Encode") 然后就可以获取到经过MD5加密的字符串了: encodeStr = m.hexdigest() print encodeStr 输出结果为: f8fd73cf519e6f11513d505b9dd33541 当

Python hashlib模块 (主要记录md5加密)

python提供了一个进行hash加密的模块:hashlib 下面主要记录下其中的md5加密方式(sha1加密一样把MD5换成sha1) [python] view plaincopyprint? >>> import hashlib >>> m = hashlib.md5() >>> m.update("Nobody inspects") >>> m.update(" the spammish repe

Python(九):递归+内置函数+第三方模块+md5加密+操作mysql

递归 定义:递归就是函数自己调用自己,最多可循环调用999次 内置函数 1.sorted()排序,生成的是列表 2.map()帮你循环调用函数的,保存返回值,返回的是一个list.map接受一个函数名和序列 3.filter:过滤器,帮你循环调用函数,如果函数返回false,那么就过滤掉这个值,是指从你传入这个list里面过滤 4.max()求最大值 5.sum()求和 6.round:保留几位小数 7.chr:把数字转成对应的ascii码表里对应的值 8.ord:把字母转成对应的ascii码表

Python基础20_类的约束,异常处理,MD5加密,日志

一. 类的约束 约束程序的结构, 在分配任务之前就应该把功能定义好, 然后分别交给底下的程序员来完成相应的功能 在python中有两种办法来解决这样的问题 1. 提取父类, 然后在父类中定义好方法, 在方法中抛出一个异常, 这样所有继承父类的子类都必须重写这个方法, 否则访问的时候就会报错 class Base: def login(self): raise NotImplementedError   # 没有被实现错误, 要求子类必须重写login方法 , 不然抛出异常 class User(

python 随机数、MD5加密及yield

# 随机数  生成验证码import random # print random.random()# print random.randint(1, 5)# print random.randrange(1, 5)# temp = random.randint(65, 90)# print chr(temp)myList = []for i in range(6): i = random.randint(1, 3) # print i if i == 1: temp = str(random.r