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中的Cookie模块使用
Jul 06 Python
深入学习Python中的上下文管理器与else块
Aug 27 Python
python安装教程
Feb 28 Python
tensorflow识别自己手写数字
Mar 14 Python
对django中render()与render_to_response()的区别详解
Oct 16 Python
python 计算数据偏差和峰度的方法
Jun 29 Python
python笔记之mean()函数实现求取均值的功能代码
Jul 05 Python
用Python去除图像的黑色或白色背景实例
Dec 12 Python
Python 实现网课实时监控自动签到、打卡功能
Mar 12 Python
详解Python IO口多路复用
Jun 17 Python
Python读写锁实现实现代码解析
Nov 28 Python
python实现进度条的多种实现
Apr 29 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
php实现删除指定目录下相关文件的方法
2014/10/20 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
2016/01/08 PHP
永不消失的title提示代码
2007/02/15 Javascript
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
jQuery html() in Firefox (uses .innerHTML) ignores DOM changes
2010/03/05 Javascript
javascript中的=等号个数问题两个跟三个有什么区别
2013/10/23 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
2015/02/28 Javascript
jQuery中使用each处理json数据
2015/04/23 Javascript
详解JavaScript函数
2015/12/01 Javascript
jquery zTree异步加载简单实例讲解
2016/02/25 Javascript
JS基于clipBoard.js插件实现剪切、复制、粘贴
2016/05/03 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
javaScript中"=="和"==="的区别详解
2018/03/16 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
Python迭代和迭代器详解
2016/11/10 Python
Python简单计算给定某一年的某一天是星期几示例
2018/06/27 Python
python实现图片批量压缩程序
2018/07/23 Python
在python中对变量判断是否为None的三种方法总结
2019/01/23 Python
django celery redis使用具体实践
2019/04/08 Python
python实现两张图片拼接为一张图片并保存
2019/07/16 Python
Django表单提交后实现获取相同name的不同value值
2020/05/14 Python
HTML5 直播疯狂点赞动画实现代码 附源码
2020/04/14 HTML / CSS
纽约21世纪百货官网:Century 21
2016/08/27 全球购物
追悼会上的答谢词
2014/01/10 职场文书
教师校本培训方案
2014/02/26 职场文书
民族学专业求职信
2014/07/28 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
迎新生晚会主持词
2015/06/30 职场文书
《迟到》教学反思
2016/02/24 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL
CSS 实现角标效果的完整代码
2022/06/28 HTML / CSS