Python元类
背后有一大套的理论 !!管它呢!?理论能当饭吃吗?
先知道怎么用再说!
记住:元类就是类的模板——太形象了了呀,霍霍。
我要一大群的类都具有一中特点,我怎么给他们加上呢?模板模板吗,我从这个模板创建一群类不就OK了?那就需要元类了。霍霍》
定义一个元类(就所一个类的模板!莫多想,还要记住这是类级别的,不是对象级别的!):
class MyMeta(type):
... def __init__(cls,name,bases,dic):
... print cls.__name__
... print name
... def __str__(cls):return 'Beautiful class %s'%cls.__name__
这是个什么东西?哈,这是个元类。是个类的模板。
它要用在哪里?它要用在一个类里,作为这个类的模板。
起的什么作用?模板,就是提供一些共同的特征。
这个类提供了什么样的特征?两个特征,1。类定义后打印类的名字(__init__)。2。打印类的格式(__str__)。
到底回怎么工作,打开的你的解释器,输入以上的代码,上路:
输入:
class MyClass(object):
... __metaclass__ = MyMeta
回车结束类的定义时,输出:
MyClass
MyClass
明白了吧,霍霍!事实证明它确实是初始化一个类,而不是一个对象!!!!!这个是第一个特征。
第二个:
输入:
print MyClass
输出:
Beautiful class MyClass
啊哈,恰如其分,如我们所预料的那样!!!!!!!!当然你可以任意个性化你的类!!
####################################################################################
下面我们来实现一个Singleton模式(来自啄木鸟社区):
Singleton元类:
class Singleton(type):
... def __init__(cls,name,bases,dic):
... super(Singleton,cls).__init__(name,bases,dic)
... cls.instance = None
... def __call__(cls,*args,**kwargs):
... if cls.instance is None:
... cls.instance = super(Singleton,cls).__call__(*args,**kwargs)
... return cls.instance
非常简单的一个设计模式
相关文档:
Python作为一种功能强大且通用的编程语言而广受好评,它具有非常清晰的语法特点,适用于多种操作系统,目前在国际上非常流行,正在得到越来越多的应用。
下面就让我们一起来看看它的强大功能:
Python(派森),它是一个简单的、解释型的、交互式的、可移植的、面向对象的超高级语言。这就是对Python ......
编译Python脚本生成可执行程序,可以通过py2exe编译完成。
在VC中调用python时,可以结合py2exe,完成整个程序的独立发布^_^
google.py:
#! /usr/bin/env python
import sys, webbrowser
def main(a):
url = "http://www.google.com/search?q=%s" % a
webbrowser.o ......
代码如下:
#!/usr/bin/env python
# -*-coding:UTF-8-*-#
from common import *
import Image, ImageFilter, math, sys, os, random
def modifyImageObj(img, matrix) :
width, height = img.size
for h in range(0, height) :&n ......
以下是一个通过minidom模块写文件的完整示例,是在最近做的项目Walle上面用到的,这个示例的目的是生成一个如下的格式的xml,文件格式为无BOM utf-8。
生成xml文件格式:
<?xml version="1.0" encoding="utf-8"?>
<coverages>
<coverage>
  ......
一颗语法糖——装饰器
理论不去管,只管能办事:
1. 我要让一个函数在执行的时候,去做一些事情,比如,我要看看这些函数是不是有docstring,将这个功能拿出来,定义一个装饰器:
def showmedoc(func):
if func.__doc__:
& ......