python中元类用法实例


Posted in Python onOctober 10, 2014

本文实例讲述了python中元类用法,分享给大家供大家参考。具体方法分析如下:

1.元类(metaclass)是用来创建类的类

2.type(object):返回一个对象的类型,与object.__class__的值相同,type(name,bases,dict):创建一个新的type类型,name就是新class的name,值存到__name__属性中,bases是tuple类型,值会存到__bases__中,dict的值存到__dict__中

class X:

...     a = 1

...

X = type('X', (object,), dict(a=1))

3.类默认是用type()创建的,通过定义类时指定metaclass参数或继承自某个类,而该类指定了metaclass参数,可以自定义类的创建过程

class OrderedClass(type):

     #该方法返回值就是__new__的namespace参数,如果没有该方法namespace的值就是dict()

     @classmethod

     def __prepare__(metacls, name, bases, **kwds):

        return collections.OrderedDict()

     #namespace就是class的__dict__,这个dict类型的对象已经被填充了相应的值

     def __new__(cls, name, bases, namespace, **kwds):

        result = type.__new__(cls, name, bases, dict(namespace))

        result.members = tuple(namespace)

        return result
class A(metaclass=OrderedClass):

    def one(self): pass

    def two(self): pass

    def three(self): pass

    def four(self): pass

print(A.members)

#('__module__', '__qualname__', 'one', 'two', 'three', 'four')

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python简明入门教程
Aug 04 Python
小议Python中自定义函数的可变参数的使用及注意点
Jun 21 Python
python实现字典(dict)和字符串(string)的相互转换方法
Mar 01 Python
浅谈python中列表、字符串、字典的常用操作
Sep 19 Python
python判断设备是否联网的方法
Jun 29 Python
python用列表生成式写嵌套循环的方法
Nov 08 Python
Python3 执行Linux Bash命令的方法
Jul 12 Python
python创建ArcGIS shape文件的实现
Dec 06 Python
如何用python处理excel表格
Jun 09 Python
Python接口测试环境搭建过程详解
Jun 29 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 Python
Python万能模板案例之matplotlib绘制甘特图
Apr 13 Python
跟老齐学Python之总结参数的传递
Oct 10 #Python
跟老齐学Python之变量和参数
Oct 10 #Python
跟老齐学Python之重回函数
Oct 10 #Python
跟老齐学Python之Python文档
Oct 10 #Python
跟老齐学Python之大话题小函数(2)
Oct 10 #Python
跟老齐学Python之大话题小函数(1)
Oct 10 #Python
Python警察与小偷的实现之一客户端与服务端通信实例
Oct 09 #Python
You might like
WordPress判断用户是否登录的代码
2011/03/17 PHP
php实现分页工具类分享
2014/01/09 PHP
php获取当前时间的毫秒数的方法
2014/01/26 PHP
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
Yii统计不同类型邮箱数量的方法
2016/10/18 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
JQuery实现自定义对话框的代码
2008/06/15 Javascript
写出更好的JavaScript之undefined篇(上)
2009/11/22 Javascript
JavaScript高级程序设计(第3版)学习笔记 概述
2012/10/11 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
《JavaScript函数式编程》读后感
2015/08/07 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
jQuery解析json格式数据简单实例
2016/01/22 Javascript
简单实现js轮播图效果
2017/07/14 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
BootStrap表单验证中的非Submit类型按钮点击时触发验证的坑
2019/09/05 Javascript
微信小程序复选框实现多选一功能过程解析
2020/02/14 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
js 数据类型判断的方法
2020/12/03 Javascript
shelve  用来持久化任意的Python对象实例代码
2016/10/12 Python
快速查询Python文档方法分享
2017/12/27 Python
对python产生随机的二维数组实例详解
2018/12/13 Python
Python 类属性与实例属性,类对象与实例对象用法分析
2019/09/20 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
pyqt5实现井字棋的示例代码
2020/12/07 Python
详解css3 mask遮罩实现一些特效
2018/10/24 HTML / CSS
印度尼西亚在线时尚购物网站:ZALORA印尼
2016/08/02 全球购物
Marc Jacobs官方网站:美国奢侈品牌
2017/08/29 全球购物
简历自我评价怎么写呢?
2014/01/06 职场文书
总账会计岗位职责
2014/03/13 职场文书
创建青年文明号材料
2014/05/09 职场文书
公司授权委托书样本
2014/09/15 职场文书
2014国庆黄金周超市促销活动方案
2014/09/21 职场文书
个人简历求职信范文
2015/03/20 职场文书
2016新教师岗前培训心得体会
2016/01/08 职场文书