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 24 Python
python+Django+apache的配置方法详解
Jun 01 Python
python实现神经网络感知器算法
Dec 20 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
Dec 28 Python
python实现大转盘抽奖效果
Jan 22 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
Jun 03 Python
在django中图片上传的格式校验及大小方法
Jul 28 Python
python实现发送form-data数据的方法详解
Sep 27 Python
Python values()与itervalues()的用法详解
Nov 27 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
Jan 16 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
Jun 24 Python
python爬虫--selenium模块
Mar 31 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 spl_autoload_register实现自动加载研究
2011/12/06 PHP
关于PHP实现异步操作的研究
2013/02/03 PHP
php无限遍历文件夹示例分享
2014/03/04 PHP
php选择排序法实现数组排序实例分析
2015/02/16 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
JavaScript 无符号右移赋值操作
2009/04/17 Javascript
javascript实现yield的方法
2013/11/06 Javascript
js实现touch移动触屏滑动事件
2015/04/17 Javascript
利用Vue.js实现checkbox的全选反选效果
2017/01/18 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
使用Fullpage插件快速开发整屏翻页的页面
2017/09/13 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
浅析vue中的MVVM实现原理
2019/03/04 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
2019/05/16 Javascript
React 实现车牌键盘的示例代码
2019/12/20 Javascript
Vue微信公众号网页分享的示例代码
2020/05/28 Javascript
微信小程序调用后台service教程详解
2020/11/06 Javascript
一个月入门Python爬虫学习,轻松爬取大规模数据
2018/01/03 Python
Python自动发送邮件的方法实例总结
2018/12/08 Python
Python爬虫beautifulsoup4常用的解析方法总结
2019/02/25 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
Django封装交互接口代码
2020/07/12 Python
Html5元素及基本语法详解
2016/08/02 HTML / CSS
意大利网上购书网站:Libraccio.it
2021/02/03 全球购物
大学生的网络创业计划书
2013/12/26 职场文书
小学教师办公室制度
2014/02/03 职场文书
房务中心文员岗位职责
2014/04/16 职场文书
初中语文教学研修日志
2015/11/13 职场文书
六年级语文教学反思
2016/03/03 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python
MYSQL数据库使用UTF-8中文编码乱码的解决办法
2021/05/26 MySQL
Python使用Kubernetes API访问集群
2021/05/30 Python
Python采集壁纸并实现炫轮播
2022/04/30 Python