一: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 'str'>   返回对象的数据类型
class Person:
pass
class HBR(Person):
pass
p=HBR()
print(type(p)) #<class '__main__.HBR'> 可以精准返回数据类型 # 计算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)) #<class '__main__.Cat'> 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) #<function Person at 0x000000AFF572EB70> 打印结果显示这个是函数 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) #打印显示是方法 <bound method Person.chi of <__main__.Person object at 0x0000001208A4D400>>
print(p.chou) #打印显示静态方法是一个函数 <function Person.he at 0x00000006415EE9D8>
print(p.gao) #打印显示类方法是一个方法 <bound method Person.gao of <class '__main__.Person'>> 用类名来访问 ---〉 类名.方法
print(Person.shuai) #打印显示方法是一个函数 <function Person.shuai at 0x000000ABD8D8EAE8>
print(Person.chou) #打印显示静态方法是一个函数<function Person.chou at 0x000000ABD8D8E9D8>
print(Person.gao) #打印显示类方法是一个方法<bound method Person.gao of <class '__main__.Person'>>
总结 静态方法都是函数
类方法都是方法,类也是一个对象,也可以创建对象
实例方法用对象访问就是方法,用类名访问就是函数 三: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)

python学习之路---day18--反射的更多相关文章

  1. python学习之路-day2-pyth基础2

    一.        模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...

  2. Python学习之路-Day2-Python基础3

    Python学习之路第三天 学习内容: 1.文件操作 2.字符转编码操作 3.函数介绍 4.递归 5.函数式编程 1.文件操作 打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个 ...

  3. Python学习之路-Day2-Python基础2

    Python学习之路第二天 学习内容: 1.模块初识 2.pyc是什么 3.python数据类型 4.数据运算 5.bytes/str之别 6.列表 7.元组 8.字典 9.字符串常用操作 1.模块初 ...

  4. Python学习之路-Day1-Python基础

    学习python的过程: 在茫茫的编程语言中我选择了python,因为感觉python很强大,能用到很多领域.我自己也学过一些编程语言,比如:C,java,php,html,css等.但是我感觉自己都 ...

  5. python学习之路网络编程篇(第四篇)

    python学习之路网络编程篇(第四篇) 内容待补充

  6. Python学习之路【第一篇】-Python简介和基础入门

    1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...

  7. python 学习之路开始了

    python 学习之路开始了.....记录点点滴滴....

  8. python学习之路,2018.8.9

    python学习之路,2018.8.9, 学习是一个长期坚持的过程,加油吧,少年!

  9. Python学习之路——pycharm的第一个项目

    Python学习之路——pycharm的第一个项目 简介: 上文中已经介绍如何安装Pycharm已经环境变量的配置.现在软件已经安装成功,现在就开始动手做第一个Python项目.第一个“Hello W ...

  10. python学习之路------你想要的都在这里了

    python学习之路------你想要的都在这里了 (根据自己的学习进度后期不断更新哟!!!) 一.python基础 1.python基础--python基本知识.七大数据类型等 2.python基础 ...

随机推荐

  1. 243. Shortest Word Distance 最短的单词index之差

    [抄题]: Given a list of words and two words word1 and word2, return the shortest distance between thes ...

  2. Luogu 1580 [NOIP2016] 换教室

    先用Floyed做亮点之间的最短路,设计dp,记dp[i][j][0]为到第i节课,换了j次课,当前有没有换课达到的期望耗费体力最小值 方程(太长了还是看代码吧):dp[i][j][0]<-dp ...

  3. PHP解决跨域访问的问题

    在控制器的第一行放如下代码即可解决 header('Access-Control-Allow-Origin: http://ding.taozugong.com'); header('Access-C ...

  4. Working with WordprocessingML documents (Open XML SDK)

    Last modified: January 13, 2012 Applies to: Office 2013 | Open XML This section provides conceptual ...

  5. C# JSON使用的常用技巧(二)

    JSON在php里一句json_encode就可以得到 在C#里我们同样也很容易的可以得到 用到的类库:Newtonsoft.Json.dll 实体类: class Cat { public stri ...

  6. 如何解决某个jar包的依赖冲突问题

    我用的是idea集成开发环境,因此以该开发工具讲解. 首先在在Terminal窗口中,键入:mvn dependency:tree -Dincludes=com.google.guava 如果不加-D ...

  7. c++基本

    要投身游戏业了,自学cocos2d-x之前准备把c++的基础再捡起来 基本语法 1. cout<<"hello world"; 2. 开头写 #include < ...

  8. 自己总结的,输出到前端JSON的几种方法

    第一种:利用MODEL拼成要输出JSON的对象.再用JSON.NET转成JSON输出到前端(这种常用,就不举例了.) 第二种:利用table拼成JSON数据格式,再用JSON.NET转成JSON输出到 ...

  9. C#中的枚举使用

    基本用法 默认从0开始分配各个枚举值对应的数字值 public enum VariableType { Type1, Type2 } 指定各个枚举值对应的数字值 public enum Variabl ...

  10. Lua入门(一)

    嵌入式语言 作为一门扩展式语言,Lua 没有 "main" 程序的概念: 它只能 嵌入 一个宿主程序中工作, 该宿主程序被称为 被嵌入程序 或者简称 宿主 . 宿主程序可以调用函数 ...