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二叉树遍历的实现方法
Nov 21 Python
从零学Python之hello world
May 21 Python
Python函数可变参数定义及其参数传递方式实例详解
May 25 Python
Python实现自动登录百度空间的方法
Jun 10 Python
彻底理解Python list切片原理
Oct 27 Python
Python实现PS滤镜中马赛克效果示例
Jan 20 Python
Python unittest单元测试框架总结
Sep 08 Python
Python GUI布局尺寸适配方法
Oct 11 Python
用python3 返回鼠标位置的实现方法(带界面)
Jul 05 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 Python
Pytest框架之fixture的详细使用教程
Apr 07 Python
Python爬虫 简单介绍一下Xpath及使用
Apr 26 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
常用星际术语索引(新手指南)
2020/03/04 星际争霸
PHP过滤★等特殊符号的正则
2014/01/27 PHP
php获取域名的google收录示例
2014/03/24 PHP
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
单击按钮显示隐藏子菜单经典案例
2013/01/04 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
在localStorage中存储对象数组并读取的方法
2016/09/24 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
js实现下拉框效果(select)
2017/03/28 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
js实现复制功能(多种方法集合)
2018/01/06 Javascript
JavaScript中常见内置函数用法示例
2018/05/14 Javascript
基于vue中keep-alive缓存问题的解决方法
2018/09/21 Javascript
vue 表单验证按钮事件交由父组件触发的方法
2018/12/17 Javascript
vue使用axios上传文件(FormData)的方法
2019/04/14 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
python实现linux服务器批量修改密码并生成execl
2014/04/22 Python
Python实现多线程抓取妹子图
2015/08/08 Python
python从内存地址上加载python对象过程详解
2020/01/08 Python
css3强大的动画效果animate使用说明及浏览器兼容介绍
2013/01/09 HTML / CSS
CSS3制作酷炫的三维相册效果
2016/07/01 HTML / CSS
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
任命书标准格式
2015/03/02 职场文书
暑期实践个人总结
2015/03/06 职场文书
走进毛泽东观后感
2015/06/04 职场文书
2015年秋季运动会前导词
2015/07/20 职场文书
董事长致辞
2015/07/29 职场文书
预备党员入党感言
2015/08/01 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
Python中的 Set 与 dict
2022/03/13 Python
基于CSS制作创意端午节专属加载特效
2022/06/01 HTML / CSS