博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
16.1反射
阅读量:7023 次
发布时间:2019-06-28

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

反射

反射就是通过字符串的形式,导入模块;通过字符串的形式,去模块寻找指定函数,并执行。利用字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员,一种基于字符串的事件驱动。

# -*-coding:utf-8 -*-# 反射在其他语言中执行效率比较低,在Python中执行效率高class foo:    def __init__(self,name,age):        self.name=name        self.age=age    def show(self):        return "%s-%s"%(self.name,self.age)obj=foo("jiaxin",18)print(obj.name)b="name"#obj.b# AttributeError: 'foo' object has no attribute 'b'

getattr,hasattr,setattr,delattr四个函数

print(obj.__dict__[b])#getattr#setattr#hasattr#delattr#去什么东西里面获取什么属性v=getattr(obj,"name")print(v)# jiaxinfunc=getattr(obj,"show")print(func)# 
>print(func())# jiaxin-18print(hasattr(obj,"name"))# True 用于判断是否有name成员setattr(obj,"m1","n1")print(obj.m1) #这个m1是存在对象中的# n1delattr(obj,"m1")

转载于:https://blog.51cto.com/10777193/2103020

你可能感兴趣的文章
arm-linux-gdb+gdbserver环境搭建以及远程调试
查看>>
再谈ORACLE CPROCD进程
查看>>
readline库的使用
查看>>
mysql客户端(Navicat)远程登录操作遇到问题1142 - XXX command denied to ×××
查看>>
C# -- 把json字符串转为对象并读取各属性的值
查看>>
MVC5+EF6 入门完整教程五
查看>>
SqlServer一张表数据导入另一张表,收藏使用,工作中更新数据错误很有用
查看>>
基于FormsAuthentication的用户、角色身份认证
查看>>
Quartz定时任务学习(一)简单任务
查看>>
mapreduce程序来实现分类
查看>>
微信接口保存
查看>>
FPGA 状态机设计
查看>>
ASP.NET MVC5---通过QueryString传值
查看>>
C++中的内存管理
查看>>
Bootstrap系列 -- 27. 下拉菜单对齐方式
查看>>
关于 android百度地图 调用 地理位置 经纬度坐标,只调用一次的解决方法,通知栏不总是 搜索 GPS 。。。...
查看>>
Oracle 创建 DBLink 的方法
查看>>
后Hadoop时代的大数据架构(转)
查看>>
vs2012连接sql2008(错误类型:Could not load file or assembly)
查看>>
三种初始化
查看>>