摘要: 说起反射,大家应该都不陌生吧,特别是熟悉Java的程序员,一定经常和Class.forName打交道。Java的众多框架中,如Spring,eclipse plugin机制等很多都依赖于Java的反射技术。感觉反射在Java中属于比较高级的技术,通常作为高级主题来讲述。 但是在Python中反射比java中简单得多。使用反射获取到的函数和方法可以像平常一样加上括号直接调用,获取到类后可以直接构造实例。 学习发现Python之后发现Python有个eval函数。eval 函数的功能是将字符串生成语句执行。 如下所示:#encoding=utf-8'''Created on 阅读全文
posted @ 2013-09-02 23:45 martine 阅读(5835) 评论(0) 推荐(0) 编辑
摘要: 转载自:http://blog.sina.com.cn/s/blog_45ac0d0a01018488.htmlmro即method resolution order,主要用于在多继承时判断调的属性的路径(来自于哪个类)。之前查看了很多资料,说mro是基于深度优先搜索算法的。但不完全正确在Python2.3之前是基于此算法,但从Python2.3起应用了新算法:C3算法。为什么采用C3算法C3算法最早被提出是用于Lisp的,应用在Python中是为了解决原来基于深度优先搜索算法不满足本地优先级,和单调性的问题。本地优先级:指声明时父类的顺序,比如C(A,B),如果访问C类对象属性时,应该根据声 阅读全文
posted @ 2013-08-26 22:47 martine 阅读(557) 评论(0) 推荐(0) 编辑
摘要: 深入super一下内容引用自:http://www.cnblogs.com/lovemo1314/archive/2011/05/03/2035005.html,写的挺好的。代码段3class A(object): # A must be new-style class def __init__(self): print "enter A" print "leave A"class B(C): # A --> C def __init__(self): print "enter B" super(B, self).__init_ 阅读全文
posted @ 2013-08-26 22:22 martine 阅读(1603) 评论(0) 推荐(0) 编辑
摘要: 在python中,要调用父类的某个方法,python2.2之前需要如下代码:class A:def __init__(self): print "enter A" print "leave A"class B(A):def __init__(self): print "enter B" A.__init__(self) print "leave B">>> b = B()enter Benter Aleave Aleave B观察类B,在使用A的__init__方法的时候,我们需要直接使用类的名字 阅读全文
posted @ 2013-08-26 22:06 martine 阅读(626) 评论(0) 推荐(0) 编辑
摘要: 最近在学习python的多重继承。先来了解下多重继承的概念,所谓多重继承,是指python的类可以有两个以上父类,也即有类A,类B,类C,C同时继承类A与类B,此时C中可以使用A与B中的属性与方法。那么问题来了,如果A与B中具有相同名字的方法,这个时候python怎么调用的会是哪个方法呢?举个例子:class A(object):def __init__(self): pass def foo(self): print 'A foo'class B(object):def __init__(self): pass def foo(self): print 'B foo& 阅读全文
posted @ 2013-08-26 21:38 martine 阅读(19767) 评论(0) 推荐(0) 编辑
摘要: 先来看一段shell代码word=“a test name”selectword=“test"lineitem=`echo "$word" | awk 'match($2,"'$selectword'"){print $0}'`echo lineitem解析:字符串word中第二个字段匹配selectword则输出该行1.awk中通过"''"访问shell变量。注意是双引号中含有单引号,如通过"'$selectword'"可以访问到shell 阅读全文
posted @ 2013-08-25 13:05 martine 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 最简单地说, AWK 是一种用于处理文本的编程语言工具。AWK 在很多方面类似于 shell 编程语言,尽管 AWK 具有完全属于其本身的语法。尽管操作可能会很复杂,但命令的语法始终是:awk '{pattern + action}' 或者 awk 'pattern {action}'其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号 ({}) 不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。与其它UNIX命令一样,awk拥有自己的语法:awk [ -F re] [para 阅读全文
posted @ 2013-08-25 12:53 martine 阅读(257) 评论(0) 推荐(0) 编辑