python的types模块

python的types模块

1.types是什么:

types模块中包含python中各种常见的数据类型,如IntType(整型),FloatType(浮点型)等等。

>>> import types

>>> dir(types)

['BooleanType',

'BufferType',

'BuiltinFunctionType',

'BuiltinMethodType',

'ClassType',

'CodeType',

'ComplexType',

'DictProxyType',

'DictType',

'DictionaryType',

'EllipsisType',

'FileType',

'FloatType',

'FrameType',

'FunctionType',

'GeneratorType',

'GetSetDescriptorType',

'InstanceType',

'IntType',

'LambdaType',

'ListType',

'LongType',

'MemberDescriptorType',

'MethodType',

'ModuleType',

'NoneType',

'NotImplementedType',

'ObjectType',

'SliceType',

'StringType',

'StringTypes',

'TracebackType',

'TupleType',

'TypeType',

'UnboundMethodType',

'UnicodeType',

'XRangeType',

'__all__',

'__builtins__',

'__doc__',

'__file__',

'__name__',

'__package__']

2.types常见用法:

# 100是整型吗?

>>> isinstance(100, types.IntType)

True

>>>type(100)

int

# 看下types的源码就会发现types.IntType就是int

>>> types.IntType is int

True

但有些类型并不是int这样简单的数据类型:

class Foo:

def run(self):

return None

def bark(self):

print('barking')

a = Foo()

print(type(1))

print(type(Foo))

print(type(Foo.run))

print(type(Foo().run))

print(type(bark))

输出结果:

python中总有些奇奇怪怪的类型。有些类型默认python中没有像int那样直接就有,单但其实也可以自己定义的。

>>> import types

>>> class Foo:

def run(self):

return None

def bark(self):

print('barking')

# Foo.run是函数吗?

>>> isinstance(Foo.run, types.FunctionType)

True

# Foo().run是方法吗?

>>> isinstance(Foo().run, types.MethodType)

True

# 其实:

>>> types.FunctionType is type(Foo.run)

True

>>> types.MethodType is type(Foo().run)

True

瞬间感觉types模块号low,直接用type都能代替。。事实就是这样

3.MethodType动态的给对象添加实例方法:

import types

class Foo:

def run(self):

return None

def bark(self):

print('i am barking')

a = Foo()

a.bark = types.MethodType(bark, a)

a.bark()

如果不用MethodType而是直接a.bark = bark的话,需要在调用bark时额外传递self参数,这不是我们想要的。

原文链接:https://www.cnblogs.com/PrettyTom/p/6664808.html

python中的types是什么模块_python的types模块相关推荐

  1. python中import string是什么意思_Python之string模块(详细讲述string常见的所有方法)...

    相信不少学习python的程序员都接触过string模块 string模块主要包含关于字符串的处理函数 多说无益,初学python的小伙伴还不赶紧码起来 接下来将会讲到字符串的大小写.判断函数. 以及 ...

  2. python的time库有哪些方法_Python的time模块中的常用方法整理

    在应用程序的开发过程中,难免要跟日期.时间处理打交道.如:记录一个复杂算法的执行时间:网络通信中数据包的延迟等等.Python中提供了time, datetime calendar等模块来处理时间日期 ...

  3. python中re模块_python之re模块

    python 中使用正则表达式需要引入re模块,用来匹配处理字符串 如: import re #第一步,要引入re模块 a = re.findall("匹配规则", "要 ...

  4. python中heapq的库是什么_Python中heapq模块的用法

    heapq 模块提供了堆算法.heapq是一种子节点和父节点排序的树形数据结构.这个模块提供heap[k] <= heap[2*k+1] and heap[k] <= heap[2*k+2 ...

  5. python中def main是什么意思_Python中’__main__’模块的作用

    Python不同于C/C++,程序执行并不需要主程序,如main(),而是文件自上而下的执行. 但很多Python程序中都有 1 if __name__ == '__main__':2 stateme ...

  6. python中main.py是什么意思_python 模块中的 __init__.py __main__.py的作用

    python中文件夹想作为一个模块被引用,则在文件夹内必须要包含 __init__.py 文件,即使此文件为空. 如果此模块想要运行则必须要包含 __main__.py 文件.接下来说下两个文件起到的 ...

  7. python中的pickle是什么意思_python中pickle模块浅析

    本章为大家介绍的模块,在python2的时候,并不受宠,主要的问题是存在安全漏洞,发现问题就要及时解决,因此在现在3版本中,已经得到了妥善的修复.pickle模块是序列化模块,主要应用的是在元组和列表 ...

  8. python中怎样使用re模块_PYTHON正则表达式 re模块使用说明

    首先,运行 Python 解释器,导入 re 模块并编译一个 RE: #!python Python 2.2.2 (#1, Feb 10 2003, 12:57:01) >>> im ...

  9. 在python中、使用( )语句导入模块_Python import导入模块

    python中的import语句是用来导入模块的,在python模块库中有着大量的模块可供使用,要想使用这些文件需要用import语句把指定模块导入到当前程序中. import语句作用 import语 ...

最新文章

  1. oracle 日志大于4g,Oracle日志文件达到4G
  2. 10次相遇我才知道什么是成熟的爱--转
  3. python创建配置文件_如何写python的配置文件
  4. s6-9 TCP 定时器
  5. [推荐]大量 Blazor 学习资源(一)
  6. 意大利归还中国文物;翟天临咪蒙成考公务员题目;携程回应五一机票涨价;腾讯未成年人网络保护体系上线;这就是今天的大新闻...
  7. 一个简单的单例模式的类
  8. matplotlib 热力图_5分钟入门 Seaborn 热力图可视化
  9. android studio aspectj使用,androidStudio中使用 AspectJ
  10. SaaS 客户生命周期(逐字稿+PPT)
  11. 中国武侠片的50条爆笑定律
  12. python图像对比_python+PIL实现图片对比(一)
  13. android 内存泄漏问题【转】
  14. MySQL中的锁机制-全局锁/表锁/行锁
  15. iOS系统玩ONS游戏的详细说明(越狱,非越狱)
  16. 计算机不显示固态硬盘,电脑重启后读不到固态硬盘怎么办
  17. css设置动画匀速运动,CSS3 transition动画
  18. 信息安全必备的8张思维导图
  19. NEO FANTASY:回合制策略游戏在ACGN文化与GameFi中的新探索09-07
  20. [LOJ575]不等关系

热门文章

  1. strdup 和 strcpy
  2. struct inode
  3. You have 18 unapplied migration(s).Watching for file changes with StatReloader
  4. CALayer与UIView的关系
  5. avue表头拖拽排序,vuedraggable拖拽
  6. php如何判断ipv4_PHP校验IPV4和IPV6格式正确性
  7. 三、软件体系结构风格
  8. JavaScript禁用浏览器后退按钮
  9. 读书笔记:周星驰《大话西游之大圣娶亲》
  10. saturate_cast(),Scalar()的用法,Mat创建数组