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 ...
一周排行
  • 辛苦一个月,不过也不怎么复习. 考试当天有点感冒. 现在成绩出来了,挂了. 下午才是41分,差4分.惨呀. 本文出自 "都市布衣" 博客,谢绝转载!
  • Hiphop-php是Facebook贡献给社区的一项开源技术,通过把php文件转化为c++文件的方式,大幅提升运行效率. 对于技术人员来说,最感兴趣的就是Facebook这么大访问量的网站,是如何解决性能瓶颈问题的 ...
  • <html> <head> </head> <body> <script type="text/javascript"> //定义开始 ...
  • 上一篇简单介绍了广播的发送,这篇主要介绍下,有序广播的发送. 设置完相关属性的时候,广播就会按照有序的方式进行发送: 发送顺序: 第一条广播: 再发送第二条广播: 最后发送第三条广播. 代码如下: 布局文件: act ...
  • 软件运行界面截图 易网科技讯 9月27日消息,360公司今天发布了一款名为"360隐私保护器"的工具软件,其宣称,该软件将可实时监测并曝光客户端软件窥视用户计算机隐私的行为.今日发布的" ...
  •       自开始做前端算起,我所做过的每一个项目中都会有一个reset.css,也就是重置样式表.我现在想想都不知道第一次是从哪儿弄来的一个重置样式表.快五年了,好像从来都没有质疑过关于重置样式表的内容.     ...
  • 原文出处 http://blog.jobbole.com/22065/   实时CSS Style编辑 选择一个Dom,可以对Dom进行编辑和操作,实时修改Css Style, 同时CssStyle可以保存变更历史版 ...
  • 非变易算法 /* 第21章 非变易算法 Non-modifying sequence operations 21.0 advance, distance 为了了解模板,先了解一下这两个迭代器操作函数 21.1 逐个容 ...
  • 增量型旋转编码器    根据轴的旋转变化量输出脉冲序列.可通过其他计数器,计算输出脉冲数,并通过计数器检测旋转量.    可以追加电路,产生一周期信号的2倍,4倍脉冲数,提供电流的分辨率.选型标准    1  增量型 ...
  • 根据目前测试组内部的现状,为了保证测试组的工作质量,激励组员的日常工作,增强组员个人的专业技能,制定本制度.该制度的奖惩以积分予以计算.每人基准分为300分,当扣分至250时,开始逐级执行惩罚措施:当积分满500时, ...