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多线程扫描端口示例
Jan 16 Python
Python Property属性的2种用法
Jun 21 Python
python3操作mysql数据库的方法
Jun 23 Python
Python+PIL实现支付宝AR红包
Feb 09 Python
PyQt5每天必学之切换按钮
Aug 20 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
Python使用 Beanstalkd 做异步任务处理的方法
Apr 24 Python
pandas 按照特定顺序输出的实现代码
Jul 10 Python
从DataFrame中提取出Series或DataFrame对象的方法
Nov 10 Python
使用Python控制摄像头拍照并发邮件
Apr 23 Python
Python配置pip国内镜像源的实现
Aug 20 Python
Python中X[:,0]和X[:,1]的用法
May 10 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
ThinkPHP之M方法实例详解
2014/06/20 PHP
简单谈谈php中的unicode和utf8编码
2015/06/10 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
PHP goto语句用法实例
2019/08/06 PHP
PHP+MySQL实现在线测试答题实例
2020/01/02 PHP
jQuery的三种$()
2009/12/30 Javascript
jquery validation插件表单验证的一个例子
2010/03/03 Javascript
JS实现淘宝幻灯片效果的实现方法
2013/03/22 Javascript
jquery实现表格本地排序的方法
2015/03/11 Javascript
js实现索引图片切换效果
2015/11/21 Javascript
JS 获取HTML标签内的子节点的方法
2016/09/21 Javascript
微信小程序 实战实例开发流程详细介绍
2017/01/05 Javascript
如何在AngularJs中调用第三方插件库
2017/05/21 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
js实现网页同时进行多个倒计时功能
2019/02/25 Javascript
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
2019/07/10 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
[28:07]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第二场 12.13
2020/12/17 DOTA
100行Python代码实现自动抢火车票(附源码)
2018/01/11 Python
Python 读写文件的操作代码
2018/09/20 Python
python实现中文文本分句的例子
2019/07/15 Python
Django  ORM 练习题及答案
2019/07/19 Python
python 如何区分return和yield
2020/09/22 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
Html5元素及基本语法详解
2016/08/02 HTML / CSS
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
创联软件面试题笔试题
2012/10/07 面试题
社区戒毒工作方案
2014/06/04 职场文书
群众路线剖析材料范文
2014/10/09 职场文书
幼儿园小班教师个人工作总结
2015/02/06 职场文书
文明旅游倡议书
2015/04/28 职场文书
师德师风培训感言
2015/08/03 职场文书
教务处教学工作总结
2015/08/10 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
十大最强电系宝可梦,阿尔宙斯电系之一,第七被称为雷神
2022/03/18 日漫