python自省函数的总结(源码剖析)

原创 2015年11月17日 16:19:04
#内建函数:getattr()、setattr()、delattr()、hasattr()
#getattr(object,name)确实和object.name是一样的功能,只不过这里可以把name作为一个变量去处理
import statsout
#一个模块支持多种不同格式的打印,根据传入的formate参数的不同,调用不同的函数实现几种格式的输出
def outPut(data,format="text"):
	outputFunc=getattr(statsout,"output%s"%format)#可以根据传入output函数的format参数的不同 去调用statsout模块不同的方法(用格式化字符串实现output%s)
	return <span style="font-family: Arial, Helvetica, sans-serif;">outputFunc</span><span style="font-family: Arial, Helvetica, sans-serif;">(data)#返回的是这个方法的对象 就可以直接使用了 如果要添加新的格式 只需要在模块中写入新的方法函数</span>
	#在调用output函数时使用新的参数就可以使用不同的格式输出




#获取对象引用getattr  Getattr用于返回一个对象属性,或者方法
class rocket:
	def __init__(self):
		self.name="zhouruifu"
		self.age=23
	def method(self):
		print "method print...."
roc=rocket()
print roc.name,roc.age
roc.method()
#上下两种效果等同
print getattr(roc,"name","This property does not exist...")#如果roc对象中有属性name则打印self.name的值,否则打印 This property does not exist
print getattr(roc,"name111","This property does not exist...")
print getattr(roc,'age',"This property does not exist...")
print getattr(roc,'age222',"This property does not exist...")
print getattr(roc,"method","This property does not exist...")
print getattr(roc,"method333","This property does not exist...")
getattr(roc,"method",'default...')()#如果有方法method,运行函数并打印None   否则打印default



#setattr()
class rocket:
	def __init__(self,name):
		self.name=name
roc=rocket("zhouruifu")
setattr(roc,"zhouruifu",23)#等价于  roc.zhouruifu=23
print roc.name
print roc.zhouruifu


print hasattr(roc,"name")#存在此属性  输出True

#delattr()  参数是由一个对象(记住python中一切皆是对象)和一个字符串组成的。string参数必须是对象属性名之一。该函数删除该obj的一个由string指定的属性
delattr(roc,"name") #等价于del roc.name


#hasattr()  用于确定一个对象是否具有某个属性
print hasattr(roc,"name")#对象属性被删除后输出False

版权声明:(拒绝转载)本文为博主原创文章,欢迎指出代码不良之处,及提出代码优化方案。欢迎指点,黑夜代码,拼命奋斗,努力更新中......

STL"源码"剖析-重点知识总结

转载自:http://www.cnblogs.com/luoxn28/p/5671988.html STL是C++重要的组件之一,大学时看过《STL源码剖析》这本书,这几天复习了一下...
  • liguohanhaha
  • liguohanhaha
  • 2016年08月01日 22:58
  • 1452

《Python源码剖析》读书笔记

《Python源码剖析》电子书下载 http://download.csdn.net/detail/xiarendeniao/5130403 Python源码在官网有下载链接,用ctags -R ...
  • xiarendeniao
  • xiarendeniao
  • 2013年07月14日 23:29
  • 6806

STL源码剖析——deque的实现原理和使用方法详解

Deque 简介     deque是“double—ended queue”的缩写,和vector一样都是STL的容器,deque 是双端数组,而 vector 是单端的。     deque 在接...
  • baidu_28312631
  • baidu_28312631
  • 2015年08月26日 10:48
  • 3807

Python源码剖析笔记6-函数机制

Python的函数机制是很重要的部分,很多时候用python写脚本,就是几个函数简单解决问题,不需要像java那样必须弄个class什么的。 本文简书地址:http://www.jiansh...
  • ssjhust123
  • ssjhust123
  • 2015年08月31日 00:27
  • 1762

神经网络常用激活函数对比:sigmoid VS sofmax(附python源码)

更多深度文章,请关注:https://yq.aliyun.com/cloud Softmax函数与Sigmoid函数之间的区别 作者介绍: Saimadhu Polamuri:是一名自学...
  • AMDS123
  • AMDS123
  • 2017年04月14日 23:21
  • 8305

python字符串内建函数操作实例源码讲解

#coding=utf8 ''' 下面列出目前字符串内建支持的方法,所有这些方法都包含了对Unicode的支持, 一些甚至是专门用于Unicode的。 ------------------------...
  • henni_719
  • henni_719
  • 2017年04月05日 17:05
  • 583

Python:SQLMap源码精读—start函数

源代码 1 def start(): 2 """ 3 This function calls a function that performs checks on...
  • zhaozhanyong
  • zhaozhanyong
  • 2014年11月11日 17:05
  • 926

《python 源码剖析》 读后总结(虚拟机综述)

我是研究过jvm 所以在读这本书的时候总是先关注 python 的虚拟机。 关注python 的虚拟机,首先你要先了解 .py文件编译之后,在python虚拟机中是什么的结构;换句话说,要知道pyc ...
  • lxlmycsdnfree
  • lxlmycsdnfree
  • 2017年12月12日 15:20
  • 41

python3.6 源码分析(四):函数调用

栗子print("分析源码多快乐")我真的想不到更简单的了。。。 老规矩,编译: 0 LOAD_NAME 0 (print) ...
  • qq1025464759
  • qq1025464759
  • 2017年10月26日 19:57
  • 47

Python源码剖析 [文字版].rar

  • 2018年01月13日 16:15
  • 1.71MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python自省函数的总结(源码剖析)
举报原因:
原因补充:

(最多只允许输入30个字)