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 ...
随机推荐
- pkcs#5和pkcs#7填充的区别
最近做到了关于加密和解密的部分. 使用算法AES的时候,涉及到数据填充的部分,数据的填充有很多种方案,用的比较多的有pkcs#5,pkcs#7, 下面的都是从网上转来的.结论就是在AES 的使用中,p ...
- I.MX6 U-Boot mkconfig hacking
/**************************************************************************** * I.MX6 U-Boot mkconfi ...
- Windows2012启动自动帐户登陆
Win+R 启动 输入regedit 运行注册表 找到[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogo ...
- C#与sqlserver开发问题
最近不停的在考虑C#读取数据性能问题第一种使用ado拼接sql连接数据库第二种使用ado调用存储过程第三种使用entityframework加linq第四种使用反射IList<T> 1.从 ...
- List集合学习
Java中常用的List子类主要有:ArrayList.LinkedList.Vector.有序(存储和取出的元素一致),可重复的. 三者比较 1:访问:ArrayList和Vector都实现了Ran ...
- ubuntu 配置静态IP及DNS
http://blog.csdn.net/njchenyi/article/details/8715417
- SpringMVC传递数据的流线图
流程含义解释:(1)HTTP请求到达web服务器,web服务器将其封装成一个httpServletRequest对象(2)springMVC框架截获这个httpServletRequest对象(3)s ...
- strlen和sizeof的长度区别
strlen返回字符长度 而sizeof返回整个数组占多长,字符串的\0也会计入一个长度
- socket编程 —— 非阻塞socket (转)---例子已上传至文件中
在上一篇文章 <socket编程——一个简单的例子> http://blog.csdn.net/wind19/archive/2011/01/21/6156339.aspx 中写了一个简单 ...
- php mysql 字符集(三) (转)
http://bbs.csdn.net/topics/390097514 gbk页面插入数据到utf8表,然后取出到gbk页面 首先, 这个set names x等价于SET character_se ...