一、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("登陆失败")

  

  

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

  1. Python 获取MD5加密值

    Python 获取MD5加密值方法封装 import hashlib def get_md5(s): """获取MD5加密值 :param s: 需要加密的字符串 :re ...

  2. python基础之 反射,md5加密 以及isinstance, type, issubclass内置方法的运用

    内容梗概: 1. isinstance, type, issubclass 2. 区分函数和方法 3. 反射(重点) 4. md5加密 1. isinstance, type, issubclass1 ...

  3. python之MD5加密

    一. MD5加密import hashlib #Python3里的引用#import md5 #Python2里的引用 1. md5是不可逆的,不能解密2. 所有语言生成的md5串都是一样的 3. 不 ...

  4. 一小部分用python进行MD5加密的小技巧

    上个图 要求计算出开头为ae3da且盐值为3c6e的字符串 简单的思路就是直接进行枚举,然后筛选符合条件的MD5加密字符,代码如下 #-*- coding:utf- -*- import hashli ...

  5. Python 实现MD5加密

    from hashlib import md5 def encrypt_md5(s): # 创建md5对象 new_md5 = md5() # 这里必须用encode()函数对字符串进行编码,不然会报 ...

  6. Python基础-MD5加密

    import hashlibm = hashlib.md5()#构造一个md5 m.update(b"Hello")#加密前必须转化成二进制字节类型print(m.hexdiges ...

  7. 五、python中MD5加密

    import hashlib '''用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法'''##### ...

  8. python进行md5加密的两种方法

    本文转自:https://www.cnblogs.com/zknublx/p/6212590.html 一. 使用md5包 import md5 src = 'this is a md5 test.' ...

  9. python进行md5加密

    代码函数 import hashlib def md5(str): m = hashlib.md5() m.update(str) return m.hexdigest() f = open('idf ...

  10. 【python】md5加密方法相关使用

    md5方法在hashlib库中,使用前需要先导入.它的主要方法为update,copy,以及转换为二进制,十六进制. 用法说明: Help on HASH object: class HASH(bui ...

随机推荐

  1. 【转载】微软官方提供的Sqlserver数据库操作帮助类SQLHelper类

    在.NET平台中,C#语言一般使用ADO.NET组件来操作Sqlserver数据库,通过ADO.NET组件可以实现连接数据库.查询数据集.执行SQL语句以及关闭数据库连接等操作,为此网上有很多开发者自 ...

  2. Revit二次开发: 文件损坏

    哪些因素可能会导致损坏? 损坏的原因也各不相同,包括但不限于 无法读取/写入存储介质 程序发生崩溃(特别是在数据写入 RVT 模型时) 附加模块以通过正常 UI 无法或意外的方式修改图元 未经测试的多 ...

  3. .NET Core 实践一:微服务架构的优点(转)

    微服务现在已经是各种互联网应用首选的云架构组件,无论是 BAT 还是 滴滴.美团 ,微服务都是重要的一环. 相对于微服务,传统应用架构有以下缺点: 1. 业务代码混杂,团队成员职责边界不清,团队协作体 ...

  4. vb.net ping

    Function ping(ByVal IP As String) As String If My.Computer.Network.Ping(IP) Then MessageBox.Show(&qu ...

  5. [日常]总结2016年7月入职至2016年7月26号微盘所遇bug

    2016年刚入职后在新浪微盘项目上所遇到的问题: 1.前端接口的程序不同版本问题,版本号在程序路径中区分,比如2.4.2/lib/sdk/api/weipan/Client.php 2.文件夹接口的m ...

  6. Hibernate入门(十二)离线条件检索

    Hibernate——离线条件检索DetachedCriteria DetachedCriteria翻译为离线条件查询,因为它是可以脱离Session来使用的一种条件查询对象,我们都知道Criteri ...

  7. express 对数据库数据增删改查

    接着 http://www.cnblogs.com/cynthia-wuqian/p/6560548.html (1)概念 Schema(属性) :一种以文件形式存储的数 据库模型骨架,不具备数据库的 ...

  8. Spider-two

    一.网络数据加密:1. md5 / sha1 不可逆加密算法: 结果是十六进制数, 结果不可逆, 多用于文件验证 import hashlib md5_obj = hashlib.md5() sha1 ...

  9. HTML5为输入框添加语音输入功能

    这里介绍的是大家以后要用到的html强大功能,可直接给输入框增加语音功能,下面我们先来看看实现方法. 大家可以看到在输入框右边的麦克风图标,点击麦克风就能够进行语音识别了. 其实很简单,语音识别是ht ...

  10. cf55D. Beautiful numbers(数位dp)

    题意 题目链接 Sol 看到这种题就不难想到是数位dp了. 一个很显然的性质是一个数若能整除所有位数上的数,则一定能整除他们的lcm. 根据这个条件我们不难看出我们只需要记录每个数对所有数的lcm(也 ...