Python 小知识点(9)--反射
通过字符串映射或修改程序运行时的状态、属性、方法。有如下四个方法
1.hasattr(obj,name_str) , 判断一个对象obj里是否有对应的name_str字符串的方法
2.getattr(obj,name_str), 根据name_str字符串去获取obj对象里的对应的方法的内存地址
3.setattr(obj,'y',z), is equivalent to ``x.y = v'' obj是一个对象 y是一个对象中需要的属性 v 是y的值
4.delattr is equivalent to ``del x.y''
实例代码如下:
'''
反射
hasattr(obj,name_str) , 判断一个对象obj里是否有对应的name_str字符串的方法
getattr(obj,name_str), 根据name_str字符串去获取obj对象里的对应的方法的内存地址
setattr(obj,'y',z), is equivalent to ``x.y = v''
delattr is equivalent to ``del x.y''
'''
def bulk(self):
print("%s is yelling...." %self.name) class Dog(object):
def __init__(self,name):
self.name = name def eat(self,food):
print("%s is eating..."%self.name,food) d = Dog("TD")
choice = input(">>:").strip() if hasattr(d, choice):
haveFunc = getattr(d, choice)
haveFunc("food")
else:
setattr(d, choice, bulk) #若从控制台输入的字符串为talk此时此处等价于d.talk = bulk
Add_func = getattr(d, choice)
Add_func(d)
结论:反射是通过字符串的形式操作对象相关的成员。一切事物都是对象!!!
Python 小知识点(9)--反射的更多相关文章
- python小知识点总结
小知识点总结 1.python2和python3的区别 python2 python3 默认编码 ascii utf-8 input() raw_input() input() print 可以不 ...
- Python小知识点(3)--装饰器
(1)装饰器含参数,被装饰函数不含(含)参数 实例代码如下: import time # 装饰器函数 def wrapper(func): def done(*args,**kwargs): star ...
- python小知识点
问题:求列表中每个元素的元素次方之和>>> a=[1,2,3,4]>>> k=len(a)第一种解法# s=0# for x in a:# ...
- python小知识点随笔
可能会有不局限于Python语言的内容,文中“>>>”表示结果,而不是命令行交互的提示符 1.关于字符串编码 ASCII编码 占用一个字节 二进制11111111=十进制255 所以 ...
- Python小知识点(5)--面向对象部分
面向对象: 世间万物,皆可分类.--------------------手机<--------------某一个分类 世间万物,皆为对象.--------------------我的手机< ...
- Python 小知识点(7)--类的创建方式
1. 创建类的第1方式(常用) class Foo(object): def func(self): print("Hello Foo") 2.创建类的第2方式 def func( ...
- Python小知识点(4)--模块相关
1.模块: 定义:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是以.py结尾的python文件(文件名:test.py,对应的模块名:test). 包:用来从逻辑上组 ...
- Python小知识点(2)
1.简述Python的运行过程 在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件. 我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器 ...
- Python 小知识点(1)
1.Python命名规则------>下划线连接 girl_of_wfb="lgl" 2.常量-----名称全大写->WFB="WFaceBoss&qu ...
随机推荐
- I.MX6 Kernel BUG at include/linux/netdevice.h:520!
/*************************************************************************** * I.MX6 Kernel BUG at i ...
- 【集成学习】sklearn中xgboost模块中plot_importance函数(绘图--特征重要性)
直接上代码,简单 # -*- coding: utf-8 -*- """ ################################################ ...
- Redis学习总结之二——Redis配置文件(Windows版)
# Redis configuration file example # Note on units: when memory size is needed, it is possible to sp ...
- POJ1741 Tree + BZOJ1468 Tree 【点分治】
POJ1741 Tree + BZOJ1468 Tree Description Give a tree with n vertices,each edge has a length(positive ...
- java基础:eclipse编程不得不知道的技巧
如果你是位具有开发经丰富的工程师,在开发的过程中,你就会很强烈的要求快捷的编程.如何快捷编程,只有更加熟悉开发工具.那么eclipse是同样也有很多技巧.可以带着下面问题来阅读1.如何查找类相关信息? ...
- 剑指offer第二章
剑指offer第二章 1.二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含 ...
- [MEF] 学习之一 入门级的简单Demo(转)
MEF 的精髓在于插件式开发,方便扩展. 我学东西,习惯性的先搞的最简单的Demo出来,看看有没有好玩的东东,然后继续深入.这个博文,不谈大道理,看demo说事儿. 至于概念,请google ,大把大 ...
- ballerina 学习一 基本项目安装试用
ballerina介绍 建议参考这篇文章: https://mp.weixin.qq.com/s/DqdlOhquqMaGOJf26lANPw 1. 安装 直接下载对应操作系统的二进制文件即 ...
- toxiproxy 安装试用
备注: 实际上是一个代理工具,但是又不是简单的进行代理(tcp,可以配置策略,toxics 实现延迟,模拟故障, 对于这个大家可能了解的就是netflix 公司的chaos monkey, ...
- 【转】一步一步教你在Ubuntu12.04搭建gstreamer开发环境
原文网址:http://blog.csdn.net/xsl1990/article/details/8333062 闲得蛋疼 无聊寂寞冷 随便写写弄弄 看到网上蛮多搭建gstreamer开 ...