一、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. C#通过虚方法实现方法重写—多态。

    class Program { //希望person存的是哪个类的对象就调用哪个类的方法 //第一步 将父类中对应方法家virtual关键字 变为虚方法(子类可重写) //子类中方法用override ...

  2. surging+CentOS7+docker+rancher2.0 入门部署教程

    准备工作 开发环境  Visual Studio 2017 15.5 运行环境  虚拟机CentOS 7+Docker+Rancher 2.0+Consul+RabbmitMQ 项目下载地址  htt ...

  3. P、NP、NPC、NP-Hard问题到底是何方神圣?

    最近在做一个求解有向图中回路的问题,老师说求解图中全部回路是一个NP难问题.突然想到P.NP.NPC.NP-hard的描述一致不是很清楚,所以又学习了一下. 在解释这四个概念之前,我们需要先知道两个问 ...

  4. JSJ—编译器与虚拟机哪个重要?

    阅读本文约“2分钟” 熟悉Java的朋友都知道虚拟机还有编译器,那么它们各自主要的功能是什么?谁比较重要呢?让我们来了解一下这两位美女的故事. 虚拟机可以说就是Java,她能让程序运行起来. 但是编译 ...

  5. Python3 系列之 基础语法篇

    基础数据类型 整数 python 可以处理任意大小的整数 浮点数 python 可以处理任意大小的浮点数,但是需要注意的一点是:整数运算永远是精确的(除法也是精确的),而浮点数运算则可能会有四舍五入的 ...

  6. nginx部署与安装

    1.在学习ngnix的时候,免不了需要进行安装,安装其实很简单,一个shell脚本就可以搞定可以参考如下 使用root用户执行nginx-install.sh脚本即可,脚本如下: #!/bin/bas ...

  7. Laravel 系列入门教程(二)【最适合中国人的 Laravel 教程】

    本篇文章中,我将跟大家一起体验 Laravel 框架最重要的部分——路由系统. 如果你读过 2015 版的教程,你会发现那篇文章里大书特书的 Auth 系统构建已经被 Laravel 捎带手给解决了. ...

  8. iOS----------关于UDID和UUID的一些理解

    一.UDID(Unique Device Identifier)  UDID是Unique Device Identifier的缩写,中文意思是设备唯一标识. 在很多需要限制一台设备一个账号的应用中经 ...

  9. readLine()的注意点

    我在用socket做即时通讯的时候,读取服务器返回的信息用了BufferedReader,用起来挺方便的. BufferedReader br = new BufferedReader(new Inp ...

  10. MFC 键盘响应

    键盘响应 插入函数:在...对话框/menu中进入建立类模式,建立preTranslateMessage(MSG * pMsg) 在CXXXView类中,添加: BOOL CMy9_1View::Pr ...