一、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. 【转载】Centos系统快速部署LNMP环境

    PHP语言在Linux系统上运行的时候,需要在Linux系统上部署相应的Nginx.MySQL.PHP等环境,只有将这些环境参数都设置好,PHP相关应用程序才可正常运行,部署环境的方法有很多种,可手动 ...

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

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

  3. Centos 7.6搭建LAMP,部署zabbix监控环境

    一.安装环境 LAMP 1.安装apache yum install -y httpd httpd服务开机进行自启:systemctl enable httpd 启动httpd服务:systemctl ...

  4. ql语句中left join和inner join中的on与where的区别分析

    sql语句中left join和inner join中的on与where的区别分析   关于SQL SERVER的表联接查询INNER JOIN .LEFT JOIN和RIGHT JOIN,经常会用到 ...

  5. C#中try catch finally的执行顺序

    1.首先明确一点,就是不管怎样,finally一定会执行,即使程序有异常,并且在catch中thorw 了 ,finally还是会被执行. 2.当try和catch中有return时,finally仍 ...

  6. linux定时任务crontab 实现如何每秒执行一次!

    linux crontab 命令,最小的执行时间是一分钟.如需要在小于一分钟内重复执行,可以有两个方法实现. Cron 各项的描述 以下是 crontab 文件的格式: {minute} {hour} ...

  7. thinkphp简洁、美观、靠谱的分页类

    我们要实现如下图分页效果 这个分页类是在thinkphp框架内置的分页类的基础上修改而来:原分页类的一些设计,在实际运用中感觉不是很方便: 1.只有一页内容时不显示分页: 2.原分页类在当前页是第一页 ...

  8. Synchronized 和 Lock 锁在JVM中的实现原理以及代码解析

    一.深入JVM锁机制:synchronized synrhronized关键字简洁.清晰.语义明确,因此即使有了Lock接口,使用的还是非常广泛.其应用层的语义是可以把任何一个非null对象作为&qu ...

  9. Android为TV端助力 doc里面adb连接出现问题的解决方法

    第一保证连接的两边都是有网的 第二  就是网上常说的1.adb kill-server 2.adb start-server 3.adb remount 但是在运行adb remount有可能会提示 ...

  10. wap2app(七)-- 长按保存图片

    用Hbuilder打包网站,在打包好的app中是无法像网站那样直接使用长按图片保存的功能的,需要在网站里对来自wap2app进行单独处理,接下来介绍一下如何在Hbuilder打包后的app里实现长按图 ...