博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python学习之路---day18--反射
阅读量:6309 次
发布时间:2019-06-22

本文共 4033 字,大约阅读时间需要 13 分钟。

一:isinstance,type,issubclass

   001:内置函数:isinstance()

     class Base:            pass        class Foo(Base):            pass        class Bar(Foo):             pass        print(issubclass(Bar,Base))  #True  查看Bar是不是Base的子类(issubclass 可以隔代查看)        print(issubclass(Bar,Foo))  #True  查看Bar是不是Base的子类        print(issubclass(Foo,object))  #True    Foo是object的子类        print(issubclass(Bar,object))   #True   Bar是object的子类        print(issubclass(Base,object)) #$True   Base是object的子类        总结:object是所有类的根,面向对象的祖宗,所有的类都他的子类

  02:type:

     001: 返回近准数据类型案例

    print(type("是的啊"))   #
返回对象的数据类型 class Person: pass class HBR(Person): pass p=HBR() print(type(p)) #
可以精准返回数据类型 # 计算a+b的结果,数学运算 def cul(a,b): if (type(a)==int or type(a)==float) and (type(b)==int or type(a)==float): return a+b else: print("有问题,无法计算!") c=cul(3,5) print(c)

 03:isinstance()  判断xxx对象是否是xxx类型的  不能隔代 

    class Animal:            pass        class Cat(Animal):            pass        class BosiCat(Cat):            pass        c=Cat()        print(type(c))   #
c的类型是 cat print(c,BosiCat) #Faslse # print(isinstance(c,BosiCat)) # False print(isinstance(BosiCat,Animal)) #False 不能隔代查看

  04:) 迭代器 

    from collections import Iterator        lst=[]        it=lst.__iter__() #list_iterator        print(isinstance(it,Iterator))   #True

二:判断是函数还是方法

def Person():            pass        print(Person)   #
打印结果显示这个是函数 class Person: def shuai(self): #实例方法 pass @staticmethod def chou(): #静态方法 可以将方法转换为常数运算 pass @classmethod def gao(cls): pass p=Person() 通过打印查看是方法还是函数: # FunctionType:函数 # MethodType: 方法 print(p.shuai()) #加括号打印就是 调用了,会返回值得 用对象来访问 --〉 对象.方法 print(p.shuai) #打印显示是方法
> print(p.chou) #打印显示静态方法是一个函数
print(p.gao) #打印显示类方法是一个方法
> 用类名来访问 ---〉 类名.方法 print(Person.shuai) #打印显示方法是一个函数
print(Person.chou) #打印显示静态方法是一个函数
print(Person.gao) #打印显示类方法是一个方法
> 总结 静态方法都是函数 类方法都是方法,类也是一个对象,也可以创建对象 实例方法用对象访问就是方法,用类名访问就是函数三:md5加密算法: 01:md5 算法是一种不可逆的加密算法: # md5 使用案例:登录密码验证(md5 是一种不可逆的加密方式) import hashlib #倒入模块 salt=b"fsdfse" #设置一个加盐指令 必须要 b"" 以b开头 def jiami(n): obj=hashlib.md5(salt) #固定格式,创建对象,可以给对象加盐(二次加密),也可以不加盐 obj.update(n.encode("utf-8")) #将明文转换为密文 return obj.hexdigest() #获取密文 # 注册: usn=input("请输入你的注册ID:") pd=input("请输入你的密码:") pd=jiami(pd) # print(pd) #查询 查询加密后的密文 n=1 #登陆 三次机会 while n<4: print("登陆界面") usename=input("请输入你的用户名:") password=input("请输入你的密码:") if usename==usn and pd==jiami(password): #查看输入后的密码在加密后是不是与原密码加密后的源码一样 print("欢迎登陆") break else: print("账号或则密码错误") n+=1

四:反射

基本知识点:我们可以创建一个Tom.py文件,然后在另外一个新的py文件里,先通过倒入 import.Tom  这个文件    来实现访问Tom这个文件    主要用到的-知识点:三个函数        hasattr()  :判断源文件(这里指Tom这个文件) 是否有我们要调用的方法名        getattr():从原文件调用我们需要的内容        delattr():删除原文件我们不需要的内容        三个函数都是在内存里面进行的,我们在倒入 import.Tom 这个文件时,文件已经暂存在内存里面了,动作都在在内存里面操作进行的    实例例子:    import Tom    class Car:        def __init__(self,color,pai,price):            self.color=color            self.pai=pai            self.price=price        def fly(self):            print("飞的高点吧")    c=Car("黄色","qq",1233)    # delattr(Car,"fly")  #操纵我们的类或则对象    # c.fly() #AttributeError: 'Car' object has no attribute 'fly'    #将原来的属性改为其它的    # setattr(Car,"fly",lambda n:print("我要飞的更高"))    # c.fly()   #我要飞的更高    # print(c.color)  #黄色    # 将原来的实例变量改为新的    setattr(c,"color","粉色")    print(c.color)    #粉色    print(getattr(c,"pai"))   #qq    print(c.pai)    #qq    setattr(c,"pai","达蹦")    print(c.pai)       #达蹦    print(Tom.name)    #hello world    setattr(Tom,"name","bbbbb")    print(Tom.name)

 

转载于:https://www.cnblogs.com/one-tom/p/9936955.html

你可能感兴趣的文章
为什么要跟别人比?
查看>>
app启动白屏
查看>>
Oracle 提高查询性能(基础)
查看>>
学习知识应该像织网一样去学习——“网状学习法”
查看>>
Hadoop集群完全分布式安装
查看>>
QString,char,string之间赋值
查看>>
我的友情链接
查看>>
Nginx+mysql+php-fpm负载均衡配置实例
查看>>
shell脚本操作mysql数据库 (部份参考)
查看>>
MySql之基于ssl安全连接的主从复制
查看>>
informix的逻辑日志和物理日志分析
查看>>
VMware.Workstation Linux与windows实现文件夹共享
查看>>
ARM inlinehook小结
查看>>
wordpress admin https + nginx反向代理配置
查看>>
管理/var/spool/clientmqueue/下的大文件
查看>>
HTML学习笔记1—HTML基础
查看>>
mysql dba系统学习(20)mysql存储引擎MyISAM
查看>>
centos 5.5 64 php imagick 模块错误处理记录
查看>>
apache中文url日志分析--php十六进制字符串转换
查看>>
Ansible--playbook介绍
查看>>