Python 元类使用说明


Posted in Python onDecember 18, 2009

我要一大群的类都具有一中特点,我怎么给他们加上呢?模板模板吗,我从这个模板创建一群类不就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

非常简单的一个设计模式,相信你能明白是怎么回事!
class MyClass(object): 
__metaclass__ = Singleton 
def __init__(self,arg): 
self.arg = arg

使用了Singleton元类的类。

是不是只能有一个实例呢??那只能看看了,邓爷爷说的好:实践是检验真理的唯一标准。——精华!!

>>> my1 = MyClass("hello") 
>>> my2 = MyClass("world") 
>>> my1 is my2 
True 
>>> my1.arg 
'hello' 
>>> my2.arg 
'hello'

我们创建my2的尝试失败了,而这恰恰证明我们成功了。

其实元类用的不多,理解理解。霍霍!!

Python 相关文章推荐
举例讲解Python程序与系统shell交互的方式
Apr 09 Python
Python中Django 后台自定义表单控件
Mar 28 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
Aug 25 Python
python+pygame简单画板实现代码实例
Dec 13 Python
对python实现合并两个排序链表的方法详解
Jan 23 Python
对IPython交互模式下的退出方法详解
Feb 16 Python
程序员的七夕用30行代码让Python化身表白神器
Aug 07 Python
Python计算IV值的示例讲解
Feb 28 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
Apr 15 Python
Tensorflow tf.tile()的用法实例分析
May 22 Python
Python大批量搜索引擎图像爬虫工具详解
Nov 16 Python
python源文件的字符编码知识点详解
Mar 04 Python
Python3 入门教程 简单但比较不错
Nov 29 #Python
Python2.5/2.6实用教程 入门基础篇
Nov 29 #Python
python 快速排序代码
Nov 23 #Python
python 文件和路径操作函数小结
Nov 23 #Python
Python+Django在windows下的开发环境配置图解
Nov 11 #Python
Python 开发Activex组件方法
Nov 08 #Python
Python 匹配任意字符(包括换行符)的正则表达式写法
Oct 29 #Python
You might like
php中几种常见安全设置详解
2010/04/06 PHP
基于PHP选项与信息函数的使用详解
2013/05/10 PHP
php检测useragent版本示例
2014/03/24 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
2010/12/06 Javascript
javascript 图片裁剪技巧解读
2012/11/15 Javascript
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
优化Jquery,提升网页加载速度
2013/11/14 Javascript
jQuery simplePage+AJAX plus分页插件用法实例
2016/02/17 Javascript
js实现简单的省市县三级联动效果实例
2016/02/18 Javascript
如何制作幻灯片(代码分享)
2017/01/06 Javascript
JS html时钟制作代码分享
2017/03/03 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
JavaScript变量作用域及内存问题实例分析
2019/06/10 Javascript
最简单的vue消息提示全局组件的方法
2019/06/16 Javascript
关于layui 下拉列表的change事件详解
2019/09/20 Javascript
关于在LayUI中使用AJAX提交巨坑记录
2019/10/25 Javascript
小程序实现多个选项卡切换
2020/06/19 Javascript
python按照多个字符对字符串进行分割的方法
2015/03/17 Python
Python中type的构造函数参数含义说明
2015/06/21 Python
Python for Informatics 第11章之正则表达式(二)
2016/04/21 Python
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
如何在django里上传csv文件并进行入库处理的方法
2019/01/02 Python
Anaconda的安装及其环境变量的配置详解
2020/04/22 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
2020/05/15 Python
Python大批量搜索引擎图像爬虫工具详解
2020/11/16 Python
Jones Bootmaker官网:优质靴子和鞋子在线
2020/11/30 全球购物
《圆明园的毁灭》教学反思
2014/02/28 职场文书
《骑牛比赛》教后反思
2014/04/22 职场文书
卫生标语大全
2014/06/21 职场文书
会计人员岗位职责
2015/02/03 职场文书
实习生个人总结范文
2015/02/28 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
2015年乡镇残联工作总结
2015/05/13 职场文书
十月围城观后感
2015/06/08 职场文书
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python