一: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)