1.区别标识名与看起来相同的字符串

  • 标识名和看起来相同的字符串,两者在字面上看起来一样,却是两种东西,例如下面的例子中func函数和字符串"func"

    def func():print("func是这个函数的名字")s = "func"
    print("%s是一个字符串" % s)
    
  • 前者是函数func的函数名,后者只是一个叫func的字符串,两种是不同的事物。我们可以使用func()方式调用函数func。但是,我们不能使用"func()"的方式调用函数。说白了就是不能通过字符串来调用名字看起来相同的函数

2.反射机制

  • 反射机制的应用场景:

    • a.有时候我们访问某个变量或者方法时,并不知道有没有这个变量或者方法,就需要做出一些判断。判断是否存在有与变量或者方法同名的字符串存在
    • b.我们知道访问变量时是不能加引号的,否则会被当成字符串处理。如果想要通过字符串找到对应的同名变量,那就需要通过反射机制来处理。

3.反射有四个方法

  • getattr()、hasattr()、setattr()、delattr()

  • 具体实例如下:

    class A:def __init__(self, name, male):self.name = nameself.male = maledef func1(self):print("func1:my name is %s" % self.name)def func2(self):print("func2:I am a %s" % self.male)
    obj = A("min", "gril")
    hasattr(obj, "gvar")   # False
    hasattr(obj, "func1")  # Truegetattr(obj, "gvar")  # 报错!!!
    getattr(obj, "name")getattr(obj,"func1")
    getattr(obj,"func2")()setattr(obj,"gvar","ben")
    getattr(obj,"gvar")
    delattr(obj,"gvar")getattr(A, "func2")
    hasattr(A, "func1")
    
  • 当某个字符串与某个模块同名时,导入模块时可以使用下面的方法导入:

    mymodule = __import__(var)  # 相当于导入模块var.py
    
  • 导入后,可以在代码中用mymodule.*(方法名)来调用该模块下的任意方法!实例如下:

    # 一下是var.py文件的内容
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Date    : 2019-11-04 21:58:43
    # @Author  : cdl (1217096231@qq.com)
    # @Link    : https://github.com/cdlwhm1217096231/python3_spider
    # @Version : $Id$def printInfo():print("I am your father!")# 以下是demo.py文件,注意此执行文件
    import vars = "var"mymodule = __import__(s)
    mymodule.printInfo()
    

Python中的反射机制(reflect)相关推荐

  1. 【专题】详解Python中的反射机制

    Python面向对象的反射机制 一.反射的概念 二.熟悉面向对象的属性方法 三.面向对象的反射机制 四.实例应用 一.反射的概念 python的反射机制,核心就是利用字符串去已存在的模块中找到指定的属 ...

  2. 浅说Java中的反射机制(一)

    在学习传智播客李勇老师的JDBC系列时,会出现反射的概念,由于又是第一次见,不免感到陌生.所以再次在博客园找到一篇文章,先记录如下: 引用自java中的反射机制,作者bingoideas.(()为我手 ...

  3. formdata 接受参数中带有class 对象_浅析JAVA中的反射机制及对Servlet的优化

    今天来聊聊java中的反射机制,工作以后发现很多东西动不动就要使用反射或者动态代理,如果不能很好的理解反射,那么对于动态代理等一些重要的设计模式就会有种不够通透的感觉. 所谓的反射,就是在运行状态中, ...

  4. 初探GO中的反射机制

    Go中的反射机制 反射是什么东西? 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力. 在Go 语言中,提供了一种机制在运行时更新变量和检查它 ...

  5. Python中的驻留机制:小数据池和代码块

    Python 中的驻留机制主要有两个:小数据池和代码块.驻留机制并不是学习 Python 过程中特别重要的概念,我们学习小数据池的目的主要有两个方面: 1.解决日后写代码过程中可能出现的疑惑.在后期开 ...

  6. java代码安全检测机制_全面解析:java中的反射机制,内含代码验证解析

    什么是反射? 在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法的功 ...

  7. 根据实例详解Java中的反射机制

    概念: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java ...

  8. java反射机制是什么_java中的反射机制是什么?

    java中的反射机制是什么? 发布时间:2020-05-21 22:45:50 来源:亿速云 阅读:156 作者:鸽子 java:"一切即对象",感觉java语言本身在不断践行着这 ...

  9. java中的反射机制是什么

    给大家介绍一下java中的反射机制,java中反射机制更体现出了java的灵活性.多态.和类之间的耦合性. 1:反射是一种间接操作目标对象的机制,只要给定类的名字,就可以通过反设机制获取所有的类信息. ...

最新文章

  1. 使用Pyecharts制作Bar3D用法详解
  2. 独家 | 全面!手把手教你决策树可视化(附链接代码)
  3. 《用户故事与敏捷方法》阅读笔记一
  4. Bash shell 学习笔记六
  5. 值重新赋值_JavaScript-赋值运算符
  6. 星座图(2020特长生 T4)
  7. 统计iOS项目代码行数
  8. 写给小白的计算机概论
  9. 基于大数据的餐饮推荐系统总结
  10. 星期四星期五,越学越难
  11. matlab的libsvm工具箱(faruto版本)配置问题汇总,用于VS2015+R2017a
  12. MATLAB 求一个矩阵的最大值极其所在位置
  13. lua.c:82:10: fatal error: readline/readline.h: 没有那个文件或目录
  14. js 线性最小二乘回归线方程
  15. 第九届蓝桥杯单片机省赛试题
  16. 为啥JAVA虚拟机不开发系统_我的YMLF OS (LINUX)上装了java为何运行不了eclipse 还提示没有java虚拟机 ?...
  17. Windos 前后端项目的部署
  18. 浪潮服务器开机没有信号输出,PLC输出指示灯已经点亮但是输出没有信号-工业支持中心-西门子中国...
  19. goahead内嵌web——用户登录
  20. python期末复习总结

热门文章

  1. Unreal Engine* 4.19 的 CPU 功能检测
  2. GO基础编程-自定义函数
  3. 图表+笔记-python语言-第5章:数字/5.11 位操作
  4. Markdown学习之路
  5. JAVA语言基础-面向对象(集合框架02List、泛型)
  6. Spring Cloud Ribbon(服务消费者)
  7. Jenkins 持续集成 概念(学习笔记二十六)
  8. Python.h: No such file or directory
  9. 浅谈 nagios监控配置
  10. Dispatch_queue