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编程中一些重用与缩减的建议
Apr 14 Python
python如何在终端里面显示一张图片
Aug 17 Python
Python编程之变量赋值操作实例分析
Jul 24 Python
python中多层嵌套列表的拆分方法
Jul 02 Python
python: 判断tuple、list、dict是否为空的方法
Oct 22 Python
pycharm执行python时,填写参数的方法
Oct 29 Python
selenium+python自动化测试之多窗口切换
Jan 23 Python
Python with用法:自动关闭文件进程
Jul 10 Python
使用jupyter notebook直接打开.md格式的文件
Apr 10 Python
django Model层常用验证器及自定义验证器详解
Jul 15 Python
PyTorch中的拷贝与就地操作详解
Dec 09 Python
python Tkinter模块使用方法详解
Apr 07 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+FLASH实现上传文件进度条相关文件 下载
2007/07/21 PHP
深入php list()函数的详解
2013/06/05 PHP
php实现比较全的数据库操作类
2015/06/18 PHP
php 截取utf-8格式的字符串实例代码
2016/10/30 PHP
纯CSS3实现质感细腻丝滑按钮
2021/03/09 HTML / CSS
js 获取服务器控件值的代码
2010/03/05 Javascript
javascript中的对象创建 实例附注释
2011/02/08 Javascript
form表单action提交的js部分与html部分
2014/01/07 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
javascript用正则表达式过滤空格的实现代码
2016/06/14 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
2016/08/04 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
jQuery Validate 校验多个相同name的方法
2017/05/18 jQuery
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
2017/07/27 Javascript
Node Express用法详解【安装、使用、路由、中间件、模板引擎等】
2020/05/13 Javascript
[00:23]魔方之谜解锁款式
2018/12/20 DOTA
[01:04:31]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第二场 1月8日
2021/03/11 DOTA
Python读写ini文件的方法
2015/05/28 Python
python语言使用技巧分享
2016/05/31 Python
Python简单遍历字典及删除元素的方法
2016/09/18 Python
python urllib爬取百度云连接的实例代码
2017/06/19 Python
Win7 64位下python3.6.5安装配置图文教程
2020/10/27 Python
对Python中gensim库word2vec的使用详解
2018/05/08 Python
python 用下标截取字符串的实例
2018/12/25 Python
感知器基础原理及python实现过程详解
2019/09/30 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
2019/12/20 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
2021/03/04 Python
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
乡镇总工会学雷锋活动总结
2014/03/01 职场文书
学习演讲稿范文
2014/05/10 职场文书
向女朋友道歉的话
2015/01/20 职场文书
2015年入党决心书
2015/02/05 职场文书
天河观后感
2015/06/11 职场文书
导游词范文之颐和园/重庆/云台山
2019/09/10 职场文书