python学习笔记__反射
反射 # 通过字符串的形式对对象中的成员进行操作(获取/查找/添加/删除)。
操作的内置函数:
1.获取 getattr(object, name)
# 去对象object中获取name的内容
class Foo:
def __init__(self, name, age):
self.name = name
self.age = age obj = Foo('Lemon147', 18)
v = getattr(obj, 'name')
print(v)
>>> Lemon147 add = getattr(obj, 'add', 'not find!') #如果对象obj中有属性add则返回self.add的值,否则返回'not find'!
print(add) >>> not find!
getattr
2.查找 hasattr(object, name)
# 检查对象object中是否有name
class Foo:
def __init__(self, name, age):
self.name = name
self.age = age obj = Foo('Lemon147', 18)
setattr(obj, 'add', '')
print(getattr(obj, 'add'))
delattr(obj, 'add') add = hasattr(obj, 'add')
print(add)
>>>False
hasattr
3.添加 setattr(object, name,value)
# 在对象object中设置name的值为value
class Foo:
def __init__(self, name, age):
self.name = name
self.age = age obj = Foo('Lemon147', 18)
setattr(obj, 'add', '') add = hasattr(obj, 'add') print(add)
>>> True
print(getattr(obj, 'add'))
>>>123
setattr
4.删除 delattr(object, name)
# 删除对象object中的成员name
class Foo:
def __init__(self, name, age):
self.name = name
self.age = age obj = Foo('Lemon147', 18)
setattr(obj, 'add', '')
print(getattr(obj, 'add')) delattr(obj, 'add')
add = hasattr(obj, 'add')
print(add)
deaattr
注:getattr,hasattr,setattr,delattr对模块的修改都在内存中进行,并不会影响文件中真实内容。
应用场景
根据输入或选择,动态的调用不同的模块或功能。(同字典-dictionary 通过key,查询对应的value类似。)
def s1():
return '首页' def s2():
return '新闻' def s3():
return '精华'
test002
import test002 foo = True
while foo:
inp = input('请输入您要查询的内容,输入‘Q’退出:') #输入‘s1’执行‘首页’ if hasattr(test002, inp):
v = getattr(test002, inp)
print(v())
elif inp == 'Q':
break
else:
print('输入有误')
test001
python学习笔记__反射的更多相关文章
- 【python学习笔记】9.魔法方法、属性和迭代器
[python学习笔记]9.魔法方法.属性和迭代器 魔法方法:xx, 收尾各有两个下划线的方法 __init__(self): 构造方法,创建对象时候自动执行,可以为其增加参数, 父类构造方法不会被自 ...
- python学习笔记4_类和更抽象
python学习笔记4_类和更抽象 一.对象 class 对象主要有三个特性,继承.封装.多态.python的核心. 1.多态.封装.继承 多态,就算不知道变量所引用的类型,还是可以操作对象,根据类型 ...
- (转)Python学习笔记(1)__name__变量
Python使用缩进对齐组织代码的执行,所有没有缩进的代码,都会在载入时自动执行.每个文件(模块)都可以任意写一些没有缩进的代码,并在载入时自动执行.为了区分 主执行代码和被调用文件,Python引入 ...
- Python学习笔记之常用函数及说明
Python学习笔记之常用函数及说明 俗话说"好记性不如烂笔头",老祖宗们几千年总结出来的东西还是有些道理的,所以,常用的东西也要记下来,不记不知道,一记吓一跳,乖乖,函数咋这么多 ...
- Python 学习笔记(下)
Python 学习笔记(下) 这份笔记是我在系统地学习python时记录的,它不能算是一份完整的参考,但里面大都是我觉得比较重要的地方. 目录 Python 学习笔记(下) 函数设计与使用 形参与实参 ...
- python学习笔记整理——字典
python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...
- VS2013中Python学习笔记[Django Web的第一个网页]
前言 前面我简单介绍了Python的Hello World.看到有人问我搞搞Python的Web,一时兴起,就来试试看. 第一篇 VS2013中Python学习笔记[环境搭建] 简单介绍Python环 ...
- python学习笔记之module && package
个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...
- python学习笔记(六)文件夹遍历,异常处理
python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...
随机推荐
- Django之Form
目录 一.说明 二.参数说明 三.自定义验证规则 四.实例 一.说明 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数 ...
- 【数据预处理】TIMIT语料库WAV文件转换
1 问题描述 这两天复现代码.先构造数据集,纯净语音.不同噪声.不同SNR的混合语音.其中纯净语音由两部分组成,IEEE corpus和TIMIT. 一开始我用MATLAB中的audioread读取音 ...
- iOS开发学习-nonatomic和atomic的区别
nonatomic是非原子性的,也就是给线程不加原子锁,这样的代码运行效率会更高一点,例如: @property (nonatomic,copy)NSString *userName; @proper ...
- spring冲刺第二天
昨天查找了安卓开发的相关资料以及炸弹人游戏的资料. 由于今天课程比较多,只在晚上将安卓开发环境配置完成. 在安装软件时环境配置出现了问题,不过问过同学后成功解决.
- imooc-c++学习感悟
imooc--慕课网c++课程链接:[课程链接](http://www.imooc.com/course/list?c=C+puls+puls) Imooc 慕课网c++学习感悟 1.课程名称:c++ ...
- 图论 Kruskal算法 并查集
#include<iostream> #include<cstring> #include<string> #include<cstdio> #incl ...
- Android笔记-1
1.点击按钮出现小窗口(响应事件) 配置方式: Activity_main.xml文件中:<Button (输入)android: onClick=”test1” /> MainActiv ...
- Scrum 项目4.0&&5.0
MY—HR 成员: 角色分配 学号 博客园 4.0团队贡献分 5.0团队贡献分 丘惠敏 PM项目经理 201406114203 http://www.cnblogs.com/qiuhuimin/ 19 ...
- Java-JDBC.mysql 工具类 读取本地文件配置
引用 mysql-connector-jav 的jar 配置文件为 database.propertties . 格式如下 driverClass=com.mysql.jdbc.Driver ur ...
- js本地储存userData实例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head ...