Python小菜Bulidin Function Type使用小记

python type


type(object) 
Return the type of an object. The return value is a type object. The isinstance() built-in function is recommended for testing the type of an object.

返回对象的类型。返回的对象是一个type类型。推荐使用isinstance()来检测一个对象的类型。


With three arguments, type() functions as a constructor as detailed below.
使用3个参数的时候,type()方法可以作为一个构造器。
type(name, bases, dict) 
Return a new type object. This is essentially a dynamic form of the class statement. The name string 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 becomes the __dict__ attribute. For example, the following two statements create identical type objects:
返回一个新的类型对象。从本质来说是一种类的动态声明。
name 参数是class的名称,也是 __name__属性的值
bases 元组列出了这个类的父类,成为了__bases__属性的值
dict 包含了类体的定义,成为 __dict__属性


下面是一个案例:
>>> class X(object):
...     a = 1
...
>>> X = type('X', (object,), dict(a=1))


#----------------------------------------------------------------------------
也就是说这个type可以在运行时生成我们定制的类

自己来试一试:

小例
使用type来判断对象类型是否相同:
1 ###############
In [8]: a = '1'

In [9]: b = type(a)

In [10]: isinstance('3',b)
Out[10]: True

In [11]: isinstance([],b)
Out[11]: False

使用type来动态创建类
2#################
In [12]: Pycon = type('Pycon',(object,),{'age':20})

In [13]: type(Pycon)
Out[13]: type

In [14]: Pycon.age
Out[14]: 20

In [15]: Pycon.__name__
Out[15]: 'Pycon'

3#################
In [20]: fun = lambda x: x+1

In [21]: ClaFun = type('ClaFun',(object,),{'add':fun })

In [22]: type(ClaFun.add)
Out[22]: instancemethod


In [26]: a = ClaFun()

In [27]: a.add(3)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-27-bebdff6e9b30> in <module>()
----> 1 a.add(3)

TypeError: <lambda>() takes exactly 1 argument (2 given)
#---但是调用不行,缺少了一个self参数

4#################
In [29]: fun = lambda self,x: x+1

In [30]: ClaFun = type('ClaFun',(object,),{'add':fun })

In [31]: a = ClaFun()

In [32]: a.add(3)
Out[32]: 4

这样就行了,根据条件动态创建类应该很有用处。
更多相关文章
  • 线程间通讯 一.NSThread 1.简单说明 ①线程间通信:在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信 ②线程间通信的体现 1个线程传递数据给另1个线程 在1个线程中执行完特定任务后,转到另1个线程继续执行任务 ③线程间通信常用方法 // waitUntilDone的含义: ...
  •   Buffer overflow in configure() 首先,有关configure()函数的栈溢出,官网描述如下: 我们来看一下12月12日补丁的内容 http://bk1.ntp.org/ntp-dev/?PAGE=patch&REV=548acf55dxKfhb6MuYQwz ...
  • 备注:增加了点击按钮变换头像的功能    ViewController.m  #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)v ...
  • redis list类型 一.查看list类型的命令 二.list命令详解     一.查看list类型的命令 1.在终端数据 help @list 127.0.0.1:6379>help @list BLPOP key [key ...] timeout summary: Remove an ...
  • 1)从python官网上下载windows下的安装包python-2.7.3.msi并安装 2)打开IDLE(python GUI),输入 >>>import sys >>>sys.version 如果你的python是32位,将出现如下字符: ‘2.7.3 (d ...
  • 对于 HTML5 的开发者和公司决策者们而言,现在最重要的技术是 HTML.JavaScript.CSS.移动平台和设备.以及不断改进的 HTML 平台(包括浏览器和操作系统).这意味着,下面 10 件事情将发生在 2013 年: 1.基于HTML5移动平台的崛起 在开发跨平台 app 方面,HTM ...
一周排行
  • C114讯 北京时间9月6日下午消息(沈渣渣)据外国媒体报道,沃达丰将与Facebook合作在印度推出一款名为沃达丰 Blue的手机,该手机拥有一个专门的按钮可以直接访问全球最大的社交网站Facebook. 据悉,沃 ...
  • By Vikram Vaswani Melonfire November 07, 2000 以下是代码列表: -- <!-- code for index.html begins here --> < ...
  • 易网科技讯 4月19日消息,联想集团今天在北京发布了乐Phone.智能本等一系列移动互联网终端,并宣布其业务从传统PC正式进入移动互联网领域.联想集团CEO杨元庆向易网科技表示,预计几款产品都会在5月分上市,而上市的 ...
  • 前言: 此文接的是上篇,上次的内容是,用python操作elasticsearch存储,实现数据的插入和查询. 估计有些人一看我的标题,以为肯定是 logstash kibana elasticsearch的组合.这 ...
  • 概念: 1.二叉树深度:树中结点的最大层次称为树的深度或高度. 2.二叉树层次:从根开始定义起,根为第一层,根的孩子为第二层,以此类推. 要点: 1.递归. 2.二叉树深度为左右子树深度较大值+1. 代码: /* 求 ...
  • FreeBSD最大的优势是,在一台双启动计算机上,无需退出FreeBSD就能够访问其他操作系统分区中的数据.在FreeBSD中安装其他分区后,读.写或者删除该分区的文件是相当简单的.也许有读者会问,在FreeBSD中 ...
  • 创建MainViewController 1.初始化 代码 -(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nib ...
  • iPhone手机初次使用都必须经过激活,对于刚入机的小白们来说确实有点困难,其实iPhone5激活过程很简单,接下来为大家介绍下iphone5的激活方法,有类似需求的机友们可以参考下哈 iPhone手机初次使用都必须 ...
  • 这几天发现ADT在网速特别差的情况下,鼠标悬停不会显示javadoc,而自己写的注释则没有问题. 在网络畅通的时候又会显示javadoc. 所以我猜测ADT会在本地查找文档失败时候尝试联网查找. 一般来说,如果你之前 ...
  • 今早服务器报警 ,不能访问,于是乎cmd进入命令行,ping了一下,出现TTL expired in transit ping了一下baidu是正常的,猜测机房出现了问题. 网上查了一下TTL expired in ...