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 ...
一周排行
  • Existe una interfaz de depuración via web con privilegios de root y credenciales estáticas en routers TP-Lin ...
  • 新年伊始,京东商城CEO刘强东在年会宣布的决定,可能为这家急速奔驰了十年.轮子烧得滚烫的电商减掉一点虚火.1月9日,刘强东的内部讲话稿曝光,2013年京东商城将实施修缮遗留问题的"修养生息"战略, ...
  • 目前版本的cuda是很方便的,它的一个安装里面包括了Toolkit`SDK`document`Nsight等等,而不用你自己去挨个安装,这样也避免了版本的不同步问题. 1 cuda5.5的下载地址,官方网站即可:   ...
  • 用于linux 和linux 之间或者linux和unix之间 将nfs服务器的共享文件夹挂载到客户端,使用协议RPC(远程进程调度)   www.2cto.com   NFS使用rpc 1.当服务器端的nfs和rp ...
  • 在使用springmvc提供rest接口实现文件上传时,有时为了测试需要使用RestTemplate进行调用,那么在使用RestTemplate调用文件上传接口时有什么特别的地方呢?实际上只需要注意一点就行了,就是创 ...
  • 前言:这周看到菜单部分,以前也对菜单有过使用,但并没有系统的对菜单进行梳理.这次借着这个机会,对菜单进行梳理.但只是很浅显的系统讲解,即对菜单的种类及各种用法作了一些讲述,并没有对如何使用自定义的菜单布局做讲述,等下 ...
  • 近日,艾瑞发布了2012年第一季度移动应用广告数据.根据艾瑞统计数据显示,2012Q1电商类.快消类.汽车类广告主投放比例快速提升.电子阅读.手机游戏.资讯新闻类应用呈增长趋势.2012Q1移动应用广告出现迅猛发展之 ...
  • java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.demo4/com.example.demo4.SubAc ...
  • 题目链接:http://poj.org/problem?id=2492 题目大意: 给你n个bug和m个他们之间的信息.如给出1和3,表示1喜欢3.当然给出的说明他们是异性.判断有没有出现一种情况,比如1喜欢2,2喜 ...
  • 项目中 增加了这么一行代码,导致 一直报错:10312 网络连接异常 最终解决方案: 项目中 存在这么一行代码,去掉即可//.... Debug.startMethodTracing("yxq_noupda ...