一: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. c++ 组合模式(composite)

    原文地址:http://www.cnblogs.com/jiese/p/3168844.html 当你发现需求中是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一地使用 ...

  2. Angular24 树形菜单 ???

    待更新... 2018年5月21日15:17:47 参考博文01 参考博文02

  3. 5-有道爬虫demo(post)

    爬取有道页面,实现中文翻译成英文: #_*_ coding: utf-8 _*_ ''' Created on 2018-7-12 @author: sss 功能:爬取有道翻译 ''' import ...

  4. 解决在Python中使用Win32api报错的问题,No module named win32api

    一.系统环境 操作系统: Win7 64位 Python:3.7.0 二.在使用import win32api时,报错:No module named win32api 网上查到有下面解决办法: 方法 ...

  5. dpdk中kni模块

    一,什么是kni,为什么要有kni Kni(Kernel NIC Interface)内核网卡接口,是DPDK允许用户态和内核态交换报文的解决方案,模拟了一个虚拟的网口,提供dpdk的应用程序和lin ...

  6. QT编译时出现警告 Warning: Class Node implements the interface QGraphicsItem but does not list it in Q_INTERFACES. qobject_cast to QGraphicsItem will not work!

    1.一定要将public QObject放在public QGraphicsItem的前面,并且在该类的定义中添加Q_OBJECT宏. class XXGraphicsItem : public QO ...

  7. easyui-tabs 页签绑定click事件,动态加载jqgrid

    .前台代码 <%-- builed by manage.aspx.cmt [ver:] at // :: --%> <%@ Page Language="C#" ...

  8. WCF项目问题2-无法激活服务,因为它需要 ASP.NET 兼容性。没有未此应用程序启用 ASP.NET 兼容性。请在 web.config 中启用 ASP.NET 兼容性,或将 AspNetCompatibilityRequirementsAttribute.AspNetCompatibilityRequirementsMode 属性设置为 Required 以外的值。

    无法激活服务,因为它需要 ASP.NET 兼容性.没有未此应用程序启用 ASP.NET 兼容性.请在 web.config 中启用 ASP.NET 兼容性,或将 AspNetCompatibility ...

  9. C#序列化xml,开发常用

    序列化操作对于开发人员来说最熟悉不过了. 序列化分为:序列化和反序列化. 序列化名词解释:序列化是将对象状态转换为可保持或传输的格式的过程. 与序列化相对的是反序列化,它将流转换为对象.这两个过程结合 ...

  10. QT开发环境

    代码实现界面和槽 代码实现界面和槽 在上述工程的dialog.h中添加如下加黑代码: 加入头文件: #include <QLabel> #include <QLineEdit> ...