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使用QQ邮箱发送Email的方法实例
Feb 09 Python
Python Flask-web表单使用详解
Nov 18 Python
Python 用Redis简单实现分布式爬虫的方法
Nov 23 Python
Python排序搜索基本算法之选择排序实例分析
Dec 09 Python
python3 property装饰器实现原理与用法示例
May 15 Python
详解Python对JSON中的特殊类型进行Encoder
Jul 15 Python
Python队列、进程间通信、线程案例
Oct 25 Python
Python selenium文件上传下载功能代码实例
Apr 13 Python
基于python实现把json数据转换成Excel表格
May 07 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
Jun 11 Python
导致python中import错误的原因是什么
Jul 01 Python
教你怎么用python selenium实现自动化测试
May 27 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 二维数组和三维数组的过滤
2016/03/16 PHP
Laravel框架实现的批量删除功能示例
2019/01/16 PHP
prototype 1.5 & scriptaculous 1.6.1 学习笔记
2006/09/07 Javascript
javascript的键盘控制事件说明
2008/04/15 Javascript
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
Jquery实现带动画效果的经典二级导航菜单
2013/03/22 Javascript
js与C#进行时间戳转换
2014/11/14 Javascript
js获取当前时间显示在页面上并每秒刷新
2014/12/24 Javascript
Javascript刷新窗口方法小结
2015/10/21 Javascript
jQuery+CSS3实现3D立方体旋转效果
2015/11/10 Javascript
Jquery元素追加和删除的实现方法
2016/05/24 Javascript
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
2018/01/05 NodeJs
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
在Vue 中使用Typescript的示例代码
2018/09/10 Javascript
axios取消请求的实践记录分享
2018/09/26 Javascript
记一次vue去除#问题处理经过小结
2019/01/24 Javascript
js回溯法计算最佳旅行线路代码实例
2019/09/11 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
详解python的ORM中Pony用法
2018/02/09 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
2018/03/04 Python
Python3+Appium安装使用教程
2019/07/05 Python
浅谈Python中函数的定义及其调用方法
2019/07/19 Python
Django 请求Request的具体使用方法
2019/11/11 Python
pytorch之ImageFolder使用详解
2020/01/06 Python
Python函数默认参数常见问题及解决方案
2020/03/26 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
2020/07/02 Python
python 统计list中各个元素出现的次数的几种方法
2021/02/20 Python
会计专业自荐信范文
2013/12/02 职场文书
车辆安全检查制度
2014/01/12 职场文书
文化宣传方案
2014/03/13 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
2014幼儿园大班工作总结
2014/11/10 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
Python的代理类实现,控制访问和修改属性的权限你都了解吗
2022/03/21 Python
spring 项目实现限流方法示例
2022/07/15 Java/Android