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 21 Python
python批量修改文件名的实现代码
Sep 01 Python
python使用paramiko实现远程拷贝文件的方法
Apr 18 Python
Python 列表(List) 的三种遍历方法实例 详解
Apr 15 Python
python将.ppm格式图片转换成.jpg格式文件的方法
Oct 27 Python
用python爬取租房网站信息的代码
Dec 14 Python
pytorch使用tensorboardX进行loss可视化实例
Feb 24 Python
Python第三方库的几种安装方式(小结)
Apr 03 Python
python 已知三条边求三角形的角度案例
Apr 12 Python
python plt可视化——打印特殊符号和制作图例代码
Apr 17 Python
Tensorflow tensor 数学运算和逻辑运算方式
Jun 30 Python
详解KMP算法以及python如何实现
Sep 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
网页游戏开发入门教程三(简单程序应用)
2009/11/02 PHP
配置php网页显示各种语法错误
2013/09/23 PHP
微信公众号开发之文本消息自动回复php代码
2016/08/08 PHP
jquery图片上下tab切换效果
2011/03/18 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
js实现获取焦点后光标在字符串后
2014/09/17 Javascript
jQuery中addClass()方法用法实例
2015/01/05 Javascript
javascript实现简单的鼠标拖动效果实例
2015/04/10 Javascript
jQuery EasyUI之DataGrid使用实例详解
2016/01/04 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
2017/03/22 Javascript
详解vue.js的事件处理器v-on:click
2017/06/27 Javascript
微信小程序中post方法与get方法的封装
2017/09/26 Javascript
JS实现点击复选框变更DIV显示状态的示例代码
2017/12/18 Javascript
p5.js入门教程和基本形状绘制
2018/03/15 Javascript
在vscode里使用.vue代码模板的方法
2018/04/28 Javascript
jQuery实现表单动态添加与删除数据操作示例
2018/07/03 jQuery
vue--vuex详解
2019/04/15 Javascript
[04:22]DOTA2上海特级锦标赛主赛事第四日TOP10
2016/03/06 DOTA
不要用强制方法杀掉python线程
2017/02/26 Python
Python中标准库OS的常用方法总结大全
2017/07/19 Python
python实现神经网络感知器算法
2017/12/20 Python
点球小游戏python脚本
2018/05/22 Python
Python下opencv图像阈值处理的使用笔记
2019/08/04 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
用python实现学生管理系统
2020/07/24 Python
kmart凯马特官网:美国最大的打折零售商和全球最大的批发商之一
2016/11/17 全球购物
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
德国化妆品和天然化妆品网上商店:kosmetikfuchs.de
2017/06/09 全球购物
荟萃全球保健品:维他购
2018/05/09 全球购物
New Balance加拿大官方网站:运动鞋和健身服装
2018/11/19 全球购物
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
2015/03/25 面试题
人力资源专员自我评价怎么写
2013/09/19 职场文书
广告学毕业生求职信
2014/01/30 职场文书
中国文明网向国旗敬礼活动精彩寄语2014
2014/09/27 职场文书
求职信:会计求职的写作技巧
2019/04/24 职场文书