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线程锁(thread)学习示例
Dec 04 Python
总结Python中逻辑运算符的使用
May 13 Python
使用python实现rsa算法代码
Feb 17 Python
基于Django与ajax之间的json传输方法
May 29 Python
Python遍历文件夹 处理json文件的方法
Jan 22 Python
Python实现的旋转数组功能算法示例
Feb 23 Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 Python
10款最好的Python开发编辑器
Jul 03 Python
python2和python3实现在图片上加汉字的方法
Aug 22 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
Mar 19 Python
Python 存取npy格式数据实例
Jul 01 Python
Python 远程开关机的方法
Nov 18 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的FTP学习(二)[转自奥索]
2006/10/09 PHP
PHP session有效期session.gc_maxlifetime
2011/04/20 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
2015/05/13 PHP
php 变量引用与变量销毁机制详细介绍
2016/12/05 PHP
thinkPHP中配置的读取与C方法详解
2016/12/05 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
IE与Firefox在JavaScript上的7个不同写法小结
2009/09/14 Javascript
jquery.blockUI.js上传滚动等待效果实现思路及代码
2013/03/18 Javascript
jQuery+AJAX实现无刷新下拉加载更多
2015/07/03 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
微信小程序 progress组件详解及实例代码
2016/10/25 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
Angular2使用jQuery的方法教程
2017/05/28 jQuery
vue.js实现备忘录功能的方法
2017/07/10 Javascript
浅谈nodejs中的类定义和继承的套路
2017/07/26 NodeJs
Node.js之readline模块的使用详解
2019/03/25 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
2019/07/10 jQuery
vue实现Input输入框模糊查询方法
2021/01/29 Javascript
JS使用正则表达式实现常用的表单验证功能分析
2020/04/30 Javascript
JS实现购物车基本功能
2020/11/08 Javascript
[14:57]DOTA2 HEROS教学视频教你分分钟做大人-幽鬼
2014/06/13 DOTA
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
python判断输入日期为第几天的实例
2018/11/13 Python
Python填充任意颜色,不同算法时间差异分析说明
2020/05/16 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
HTML5 video标签(播放器)学习笔记(一):使用入门
2015/04/24 HTML / CSS
吉列剃须刀美国官网:Gillette美国
2018/07/13 全球购物
澳大利亚领先的优质葡萄酒拍卖会:Langton’s Fine Wines
2019/03/24 全球购物
导游的职业规划书范文
2013/12/27 职场文书
新郎婚宴答谢词
2014/01/19 职场文书
三八红旗手先进事迹材料
2014/05/13 职场文书
2014新生大学四年计划书
2014/09/21 职场文书
党员剖析材料范文
2014/09/30 职场文书
2014年档案管理工作总结
2014/11/17 职场文书
工作简报范文
2015/07/21 职场文书
虚拟机linux端mysql数据库无法远程访问的解决办法
2021/05/26 MySQL