Python基于内置函数type创建新类型


Posted in Python onOctober 22, 2020

英文文档:

class type(object)

class type(name, bases, dict)

With one argument, return the type of an object. The return value is a type object and generally the same object as returned by object.__class__.

The isinstance() built-in function is recommended for testing the type of an object, because it takes subclasses into account.

With three arguments, return a new type object. This is essentially a dynamic form of the class statement. The namestring is the class name and becomes the __name__ attribute; the bases tuple itemizes the base classes and becomes the __bases__ attribute; and the dict dictionary is the namespace containing definitions for class body and is copied to a standard dictionary to become the __dict__ attribute.

返回对象的类型,或者根据传入的参数创建一个新的类型

说明:

1. 函数只传入一个参数时,返回参数对象的类型。 返回值是一个类型对象,通常与对象.__ class__返回的对象相同。

#定义类型A
>>> class A:
  name = 'defined in A'

#创建类型A实例a
>>> a = A()

#a.__class__属性
>>> a.__class__
<class '__main__.A'>

#type(a)返回a的类型
>>> type(a)
<class '__main__.A'>

#测试类型
>>> type(a) == A
True

 2. 虽然可以通过type函数来检测一个对象是否是某个类型的实例,但是更推荐使用isinstance函数,因为isinstance函数考虑了父类子类间继承关系。

#定义类型B,继承A
>>> class B(A):
  age = 2

#创建类型B的实例b
>>> b = B()

#使用type函数测试b是否是类型A,返回False
>>> type(b) == A
False

#使用isinstance函数测试b是否类型A,返回True
>>> isinstance(b,A)
True

 3. 函数另一种使用方式是传入3个参数,函数将使用3个参数来创建一个新的类型。其中第一个参数name将用作新的类型的类名称,即类型的__name__属性;第二个参数是一个元组类型,其元素的类型均为类类型,将用作新创建类型的基类,即类型的__bases__属性;第三个参数dict是一个字典,包含了新创建类的主体定义,即其值将复制到类型的__dict__属性中。

#定义类型A,含有属性InfoA
>>> class A(object):
  InfoA = 'some thing defined in A'

#定义类型B,含有属性InfoB
>>> class B(object):
  InfoB = 'some thing defined in B'

#定义类型C,含有属性InfoC
>>> class C(A,B):
  InfoC = 'some thing defined in C'

#使用type函数创建类型D,含有属性InfoD
>>> D = type('D',(A,B),dict(InfoD='some thing defined in D'))

#C、D的类型
>>> C
<class '__main__.C'>
>>> D
<class '__main__.D'>

#分别创建类型C、类型D的实例
>>> c = C()
>>> d = D()

#分别输出实例c、实例b的属性
>>> (c.InfoA,c.InfoB,c.InfoC)
('some thing defined in A', 'some thing defined in B', 'some thing defined in C')
>>> (d.InfoA,d.InfoB,d.InfoD)
('some thing defined in A', 'some thing defined in B', 'some thing defined in D')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现文件分组复制到不同目录的例子
Jun 04 Python
一个小示例告诉你Python语言的优雅之处
Jul 04 Python
用python写一个windows下的定时关机脚本(推荐)
Mar 21 Python
Python算法之图的遍历
Nov 16 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
Mar 19 Python
完美解决python中ndarray 默认用科学计数法显示的问题
Jul 14 Python
python使用matplotlib画饼状图
Sep 25 Python
python实现汽车管理系统
Nov 30 Python
python创建学生成绩管理系统
Nov 22 Python
PyQt5中向单元格添加控件的方法示例
Mar 24 Python
Python 流媒体播放器的实现(基于VLC)
Apr 28 Python
利用Python实现Picgo图床工具
Nov 23 Python
python使用ctypes库调用DLL动态链接库
Oct 22 #Python
Python通过len函数返回对象长度
Oct 22 #Python
python 还原梯度下降算法实现一维线性回归
Oct 22 #Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
Oct 22 #Python
python处理写入数据代码讲解
Oct 22 #Python
基于Python爬取股票数据过程详解
Oct 21 #Python
OpenCV利用python来实现图像的直方图均衡化
Oct 21 #Python
You might like
谈谈PHP语法(4)
2006/10/09 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
JavaScript高级程序设计
2006/12/29 Javascript
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
jquery模拟按下回车实现代码
2011/09/20 Javascript
js获取网页高度(详细整理)
2012/12/28 Javascript
jQuery中RadioButtonList的功能及用法实例介绍
2013/08/23 Javascript
javascript检测是否联网的实现代码
2014/09/28 Javascript
javascript转换日期字符串为Date日期对象的方法
2015/02/13 Javascript
jQuery实现表格展开与折叠的方法
2015/05/04 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
2016/07/14 Javascript
js 动态生成html 触发事件传参字符转义的实例
2017/02/14 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
2019/10/23 Javascript
JavaScript中的函数式编程详解
2020/08/22 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
Python Django 简单分页的实现代码解析
2019/08/21 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
用Python进行websocket接口测试
2020/10/16 Python
Python 转移文件至云对象存储的方法
2021/02/07 Python
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
2016/03/16 HTML / CSS
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
什么是规则表达式
2012/05/03 面试题
质检部职责
2013/12/28 职场文书
毕业生大学生活自我总结
2014/01/31 职场文书
幼儿园大班见习报告
2014/10/31 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
资料员岗位职责范本
2015/04/13 职场文书
外出考察学习心得体会
2016/01/18 职场文书
Android自定义ScrollView实现阻尼回弹
2022/04/01 Java/Android
Python利用Turtle绘制哆啦A梦和小猪佩奇
2022/04/04 Python