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中的变量的数据类型
May 13 Python
python使用in操作符时元组和数组的区别分析
May 19 Python
python实现的守护进程(Daemon)用法实例
Jun 02 Python
python编写简单爬虫资料汇总
Mar 22 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
Apr 26 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
May 04 Python
Python搭建代理IP池实现获取IP的方法
Oct 27 Python
Python的缺点和劣势分析
Nov 19 Python
python实现超级玛丽游戏
Mar 18 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
Jun 01 Python
keras 自定义loss层+接受输入实例
Jun 28 Python
Python logging日志模块 配置文件方式
Jul 12 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+SQL 注入攻击的技术实现以及预防办法
2010/12/29 PHP
ecshop 批量上传(加入自定义属性)
2012/03/20 PHP
php数组一对一替换实现代码
2012/08/31 PHP
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
php冒泡排序与快速排序实例详解
2015/12/07 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
js实现两个值相加alert出来精确到指定位
2013/09/25 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
2016/08/05 Javascript
解决拦截器对ajax请求的拦截实例详解
2016/12/21 Javascript
如何获取元素的最终background-color
2017/02/06 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
JS基于正则实现数字千分位用逗号分隔的方法
2017/06/16 Javascript
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
node中modules.exports与exports导出的区别
2018/06/08 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
2019/06/10 jQuery
vue中filters 传入两个参数 / 使用两个filters的实现方法
2019/07/15 Javascript
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
Python实现的下载网页源码功能示例
2017/06/13 Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
2018/01/20 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
浅谈Python 列表字典赋值的陷阱
2019/01/20 Python
python 修改本地网络配置的方法
2019/08/14 Python
Ubuntu16.04安装python3.6.5步骤详解
2020/01/10 Python
Scrapy框架实现的登录网站操作示例
2020/02/06 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
Space NK美国站:英国高端美妆护肤商城
2017/05/22 全球购物
Joules官网:女士、男士和儿童服装和鞋类
2018/10/23 全球购物
土木工程应届生自荐信
2013/09/24 职场文书
幼师自荐信范文
2013/10/06 职场文书
药店主任岗位责任制
2014/02/10 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
学籍证明模板
2014/11/21 职场文书
党风廉正建设责任书
2015/01/29 职场文书
写给导师的自荐信
2015/03/06 职场文书
教你怎么用Python selenium操作浏览器对象的基础API
2021/06/23 Python