Python使用type动态创建类操作示例


Posted in Python onFebruary 29, 2020

本文实例讲述了Python使用type动态创建类操作。分享给大家供大家参考,具体如下:

使用type动态创建类
动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的。

下面看一个例子:

# 定义一个Person类
class Person(object):
  def __init__(self):
    pass

  def say(self):
    print('say hello')

p = Person()
p.say()        # 输出 say hello

print(type(p))     # 输出 <class '__main__.Person'>

print(type(Person))   # 输出  <class 'type'>

运行结果:

say hello
<class '__main__.Person'>
<class 'type'>

我们发现,type(Person)输出的是<class 'type'>是type类型。

type()函数可以查看一个类型或变量的类型,Person是一个class(类),它的类型是type,而p是一个 Person的实例,它的类型是Person类。

我们说class(类)的定义是运行时动态创建的,而创建class(类)的方法就是使用type()函数。

eg:

# 定义一个方法
def func(self, word='hello'):
  print('say %s' % word)

Person = type('Person', (object,), dict(say=func))   # 通过type创建Person类

p = Person()

p.say()         # 输出 say hello

print(type(p))     # 输出 <class '__main__.Person'>

print(type(Person))   # 输出 <class 'type'>

运行结果:

say hello
<class '__main__.Person'>
<class 'type'>

type函数动态创建类,需要传入3个参数,分别是:

  • 第一个参数:class的名称
  • 第二个参数:继承的父类集合,注意Python支持多重继承,如果只有一个父类,别忘了tuple的单元素写法(tuple单元素写法(obj,));
  • 第三个参数:class的方法名称与函数绑定,这里我们把函数func绑定到方法名say上。

通过type()函数创建的类和直接写class是完全一样的,因为Python解释器遇到class定义时,仅仅是扫描一下class定义的语法,然后调用type()函数创建出class。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python自动化测试Eclipse+Pydev 搭建开发环境
Aug 15 Python
Python虚拟环境virtualenv的安装与使用详解
May 28 Python
浅谈Python实现贪心算法与活动安排问题
Dec 19 Python
python selenium 对浏览器标签页进行关闭和切换的方法
May 21 Python
python自动查询12306余票并发送邮箱提醒脚本
May 21 Python
浅析python中的迭代与迭代对象
Oct 08 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
Nov 14 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
Feb 27 Python
python腾讯语音合成实现过程解析
Aug 01 Python
python使用rsa非对称加密过程解析
Dec 28 Python
Keras模型转成tensorflow的.pb操作
Jul 06 Python
Python使用scapy模块发包收包
May 07 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
Feb 29 #Python
Python编程快速上手——强口令检测算法案例分析
Feb 29 #Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
Feb 29 #Python
python通用读取vcf文件的类(复制粘贴即可用)
Feb 29 #Python
Python编程快速上手——疯狂填词程序实现方法分析
Feb 29 #Python
Python使用GitPython操作Git版本库的方法
Feb 29 #Python
如何使用python代码操作git代码
Feb 29 #Python
You might like
兼容ie6浏览器的php下载文件代码分享
2014/07/14 PHP
PHP比你想象的好得多
2014/11/27 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
使用symfony命令创建项目的方法
2016/03/17 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
input、button的不同type值在ajax提交表单时导致的陷阱
2009/02/24 Javascript
JavaScript 基于原型的对象(创建、调用)
2009/10/16 Javascript
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
js异常捕获方法介绍
2013/04/10 Javascript
js拖动div 当鼠标移动时整个div也相应的移动
2013/11/21 Javascript
JS脚本defer的作用示例介绍
2014/01/02 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
JQuery标签页效果实例详解
2015/12/24 Javascript
JavaScript仿支付宝密码输入框
2015/12/29 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
详解浏览器渲染页面过程
2017/02/09 Javascript
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
10个在JavaScript开发中常遇到的BUG
2017/12/18 Javascript
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
微信小程序在线客服自动回复功能(基于node)
2019/07/03 Javascript
es6中比较有用的7个技巧小结
2019/07/12 Javascript
Javascript模块化机制实现原理详解
2020/04/02 Javascript
pandas 将索引值相加的方法
2018/11/15 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
使用HTML5做的导航条详细步骤
2020/10/19 HTML / CSS
介绍一下XMLHttpRequest对象
2012/02/12 面试题
自我评价的正确写法
2013/09/19 职场文书
外语专业毕业生自我评价分享
2013/10/05 职场文书
竞选班干部演讲稿300字
2014/08/20 职场文书
公司介绍信范文
2015/01/31 职场文书
李白故里导游词
2015/02/12 职场文书
python 经纬度求两点距离、三点面积操作
2021/06/03 Python