Python的metaclass

标签:Python

metaclass一般译作元类,它是一个类的类(型)。简单来说,元类的实例是一个类,而这个类的类就是元类了。
也就是说,相对于类可以在运行时动态构造对象而言,元类也可以在运行时动态生成类。

在C++等语言中,要得知一个对象的类是很麻烦的(MFC是用宏来实现的);而Python由于有自省功能,所以非常简单。

在Python中实现Decorator模式

标签:Python

Decorator模式一般被翻译成装饰模式,它主要是用于扩展已有的功能。
一般而言,扩展只需要继承即可。但因为继承是静态的,无法动态扩展,于是会有很大的局限性。

考虑一下Java的java.io.Reader类,它有很多子类,它们之间的组合如果都用继承来实现的话,我想会是超枯燥的。
所以当我们需要一个缓冲的文件读取器,我们不会去创建一个FileBufferedReader对象,而是像下面这样创建:
Reader reader = new BufferedReader(new FileReader(filename))
这样的好处就是,我们可以随意地动态组合这些功能,而不是为每种组合都创建一个类。

在静态语言里,要实现Decorator模式是很麻烦的,因为你可能需要定义3个类。
不过在Python这种动态语言里,你完全不需要定义类,因为函数本身就是可以扩展的。

Python 3.1 alpha 2发布

标签:Python

详细更新内容请看What's New in Python 3.1 alpha 2?

看到有个自动填充数字的功能(以前要在大括号里写序号,不知道是否提供中途指定序号的功能):
'{} {}'.format(1, 2) == '1 2'

其他没什么我关心的了,嘛,至少我觉得目前的2.6比3.x更出色。

一个不错的国产HTTP服务器:Eurasia 3

标签:Python

Eurasia 3是我接触Python初期就注意到的一个东东,他是沈崴(貌似还有其他几位)用Python写的一个HTTP服务器。
说是HTTP服务器,似乎不够准确,因为实际上能跑几乎所有的TCP应用,可以当成Apache来用。并且,它也专门提供了Web服务接口,甚至还能很方便地与django、cherrypy整合。
不过真正吸引我的是它提供的HTTP长连接功能,确实很好玩。

在Python中进行整型与16进制字符串的转换

标签:Python

直接看代码吧,没什么需要多说的。
>>> '%x' % 1234
'4d2'
>>> hex(1234) # 这个比格式化字符串慢1个数量级,慎用
'0x4d2'
>>> int('4d2', 16)
1234
>>> eval('0x4d2') # 这个比int函数慢1个数量级,慎用
1234

用Python导出QQ空间的日志到WordPress

标签:Python

方法很简单,找出日志的地址,再遍历列出日志的内容。

因为单纯导出没用,还得转换成其他格式,所以我保存到一个列表里,每篇日志都对应其中的一个字典元素,字典的属性都用unicode编码。
然后dump出来,可以方便以后用Python进行再处理(默认为blogs.txt文件)。
并转换成了WordPress用的格式(默认为qzone.xml文件)。

« 看看还有什么好玩意