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中反射用法实例
Mar 27 Python
Python字符串替换实例分析
May 11 Python
Python实现批量读取word中表格信息的方法
Jul 30 Python
Python切片知识解析
Mar 06 Python
ubuntu安装mysql pycharm sublime
Feb 20 Python
python psutil库安装教程
Mar 19 Python
Python视频爬虫实现下载头条视频功能示例
May 07 Python
详解Python字典的操作
Mar 04 Python
Python3爬楼梯算法示例
Mar 04 Python
Python协程 yield与协程greenlet简单用法示例
Nov 22 Python
Python自动化测试中yaml文件读取操作
Aug 20 Python
sqlalchemy实现时间列自动更新教程
Sep 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 开源框架22个简单简介
2009/08/24 PHP
php中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
php中filter_input函数用法分析
2014/11/15 PHP
PHP异常处理浅析
2015/05/12 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
javascript AutoScroller 函数类
2009/05/29 Javascript
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
2015/03/04 Javascript
JavaScript实现常用二级省市级联下拉列表的方法
2015/03/25 Javascript
jquery实现的用户注册表单提示操作效果代码分享
2015/08/28 Javascript
JS组件Bootstrap实现弹出框效果代码
2016/04/26 Javascript
JavaScript:Array类型全面解析
2016/05/19 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
Bootstrap 表单验证formValidation 实现表单动态验证功能
2017/05/17 Javascript
js html实现计算器功能
2018/11/13 Javascript
vue-cli系列之vue-cli-service整体架构浅析
2019/01/14 Javascript
vue 弹窗时 监听手机返回键关闭弹窗功能(页面不跳转)
2019/05/10 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
跟老齐学Python之集合(set)
2014/09/24 Python
零基础写python爬虫之爬虫框架Scrapy安装配置
2014/11/06 Python
在Python中操作字典之fromkeys()方法的使用
2015/05/21 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
python 实现selenium断言和验证的方法
2019/02/13 Python
对Django 转发和重定向的实例详解
2019/08/06 Python
python梯度下降算法的实现
2020/02/24 Python
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
文秘专业毕业生就业推荐信
2013/11/08 职场文书
大学生职业规划论文
2014/01/11 职场文书
个人授权委托书范本
2014/04/03 职场文书
计划生育汇报材料
2014/12/26 职场文书
会计工作态度自我评价
2015/03/06 职场文书
悬崖上的金鱼姬观后感
2015/06/15 职场文书
vue项目两种方式实现竖向表格的思路分析
2021/04/28 Vue.js