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 ...
随机推荐
- scrapy笔记集合
细读http://scrapy-chs.readthedocs.io/zh_CN/latest/index.html 目录 Scrapy介绍 安装 基本命令 项目结构以及爬虫应用介绍 简单使用示例 选 ...
- 5233杨光--Linux第二次实验
实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 若不小心登出后,直接刷新页面即可 2. 环境使用 完成实验后可以点击桌面上方的“实验截图”保存并分享实 ...
- EDK_II环境搭建与测试
一. 环境准备 Windows 10 (64位)专业版 Visual Studio 2010旗舰版(默认路径安装) Mscrosoft SDKs 7.0A BIOS综合包里的EDK开发环境 二. 实验 ...
- Spring笔记③--spring的命名空间
p:命名空间: xmlns:p="http://www.springframework.org/schema/p" 作用:简化在xml配置bean的属性 在<bean> ...
- java读取properties文件的几种方法
一.项目中经常会需要读取配置文件(properties文件),因此读取方法总结如下: 1.通过java.util.Properties读取 Properties p=new Properties(); ...
- spring--两个数据源模板
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-met ...
- Prim's Algorithm & Kruskal's algorithm
1. Problem These two algorithm are all used to find a minimum spanning tree for a weighted undirecte ...
- 10_Java面向对象_第10天(继承、抽象类)_讲义
今日内容介绍 1.继承 2.抽象类 3.综合案例---员工类系列定义 01继承的概述 *A:继承的概念 *a:继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系 *b:在Jav ...
- 微信小程序之Flex布局
微信小程序页面布局方式采用的是Flex布局.Flex布局,是W3c在2009年提出的一种新的方案,可以简便,完整,响应式的实现各种页面布局.Flex布局提供了元素在容器中的对齐,方向以及顺序,甚至他们 ...
- 弱智python小游戏猜数字
from random import randintnum = randint(0,100)print("Guess what I think:?")bingo = Falsewh ...