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处理cookie详解
Feb 07 Python
web.py 十分钟创建简易博客实现代码
Apr 22 Python
Python中使用platform模块获取系统信息的用法教程
Jul 08 Python
Python OpenCV获取视频的方法
Feb 28 Python
python放大图片和画方格实现算法
Mar 30 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
Apr 28 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
Jun 08 Python
python飞机大战pygame游戏背景设计详解
Dec 17 Python
Python json格式化打印实现过程解析
Jul 21 Python
python实现mask矩阵示例(根据列表所给元素)
Jul 30 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 Python
Python+OpenCV实现在图像上绘制矩形
Mar 21 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
类似CSDN图片切换效果脚本
2009/09/17 Javascript
JavaScript Distilled 基础知识与函数
2010/04/07 Javascript
JQuery扩展插件Validate 2通过参数设置验证规则
2011/09/05 Javascript
cument.execCommand()用法深入理解
2012/12/04 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
iframe窗口高度自适应的实现方法
2014/01/08 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
js实现创建删除html元素小结
2015/09/30 Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
2016/02/05 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
JS中递归函数
2016/06/17 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(二)
2017/01/21 Javascript
浅谈vue实现数据监听的函数 Object.defineProperty
2017/06/08 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
vue-cli2.9.3 详细教程
2018/04/23 Javascript
在vue项目中,将juery设置为全局变量的方法
2018/09/25 Javascript
JavaScript观察者模式原理与用法实例详解
2020/03/10 Javascript
Python中计算三角函数之cos()方法的使用简介
2015/05/15 Python
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
Python找出最小的K个数实例代码
2018/01/04 Python
python构建深度神经网络(DNN)
2018/03/10 Python
python实现邮件自动发送
2019/08/10 Python
对python中各个response的使用说明
2020/03/28 Python
欧洲最大的笔和书写专家:The Pen Shop
2017/03/19 全球购物
巴黎卡诗加拿大官网:Kérastase加拿大
2018/11/12 全球购物
什么是Assembly(程序集)
2014/09/14 面试题
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
信息服务专业毕业生求职信
2014/03/02 职场文书
数学高效课堂实施方案
2014/03/29 职场文书
三严三实对照检查材料范文
2014/09/23 职场文书
公司授权委托书格式样本
2014/10/01 职场文书
计算机专业自荐信范文
2015/03/26 职场文书
毕业论文致谢格式模板
2015/05/14 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书