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 相关文章推荐
pyqt4教程之实现windows窗口小示例分享
Mar 07 Python
编写Python的web框架中的Model的教程
Apr 29 Python
Python编程之序列操作实例详解
Jul 22 Python
Python读取数据集并消除数据中的空行方法
Jul 12 Python
Python3实现的回文数判断及罗马数字转整数算法示例
Mar 27 Python
详解Python的三种拷贝方式
Feb 11 Python
logging level级别介绍
Feb 21 Python
Python xlrd excel文件操作代码实例
Mar 10 Python
Python数据可视化图实现过程详解
Jun 12 Python
Python3爬虫ChromeDriver的安装实例
Feb 06 Python
python 标准库原理与用法详解之os.path篇
Oct 24 Python
Python 数据可视化之Matplotlib详解
Nov 02 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 存取 MySQL 数据库的一个例子
2006/10/09 PHP
PHP连接access数据库
2008/03/27 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
PHP实现抓取迅雷VIP账号的方法
2015/07/30 PHP
php-msf源码详解
2017/12/25 PHP
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
GRID拖拽行的实例代码
2013/07/18 Javascript
js如何取消事件冒泡
2013/09/23 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
原生js封装的一些jquery方法(详解)
2016/09/20 Javascript
vuejs使用FormData实现ajax上传图片文件
2017/08/08 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
2018/03/21 Javascript
微信小程序实现topBar底部选择栏效果
2018/07/20 Javascript
echarts设置图例颜色和地图底色的方法实例
2018/08/01 Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
2018/12/20 Javascript
微信小程序收货地址API兼容低版本解决方法
2019/05/18 Javascript
jQuery Datatables 动态列+跨列合并实现代码
2020/01/30 jQuery
python机器人行走步数问题的解决
2018/01/29 Python
python3 读取Excel表格中的数据
2018/10/16 Python
django处理select下拉表单实例(从model到前端到post到form)
2020/03/13 Python
简单掌握CSS3将文字描边及填充文字颜色的方法
2016/03/07 HTML / CSS
在css3中background-clip属性与background-origin属性的用法介绍
2012/11/13 HTML / CSS
HTML5新增属性data-*和js/jquery之间的交互及注意事项
2017/08/08 HTML / CSS
学习心得体会
2014/01/01 职场文书
银行先进个人事迹材料
2014/05/11 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
员工升职自荐信
2015/03/27 职场文书
2015年教师教学工作总结
2015/04/28 职场文书
2015年党总支工作总结
2015/05/25 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
SpringDataJPA在Entity中常用的注解介绍
2021/12/06 Java/Android
Win Server2016远程桌面如何允许多用户同时登录
2022/06/10 Servers
SpringCloud超详细讲解Feign声明式服务调用
2022/06/21 Java/Android
搭建zabbix监控以及邮件报警的超级详细教学
2022/07/15 Servers