当前位置: 首页 > news >正文

[py]python自省工具

参考

在日常生活中,自省(introspection)是一种自我检查行为。自省是指对某人自身思想、情绪、动机和行为的检查。伟大的哲学家苏格拉底将生命中的大部分时间用于自我检查,并鼓励他的雅典朋友们也这样做。他甚至对自己作出了这样的要求:“未经自省的生命不值得存在。”

自省,自己能做什么? 写上自己的功能,以便于展示.

  • 对象属于那个类(获取类名)
  • 对象的内存id是多少
  • 对象的类型
  • 对象的值
  • 对象是否可调用
  • 对象如有__doc__属性,输出doc
  • 对象是否有这个属性
  • 是否是别类的子类

python自省工具

def interrogate(item):
    """Print useful information about item."""
    if hasattr(item, '__name__'):
        print "NAME:    ", item.__name__
    if hasattr(item, '__class__'):
        print "CLASS:   ", item.__class__.__name__
    print "ID:      ", id(item)
    print "TYPE:    ", type(item)
    print "VALUE:   ", repr(item)
    print "CALLABLE:",
    if callable(item):
        print "Yes"
    else:
        print "No"
    if hasattr(item, '__doc__'):
        doc = getattr(item, '__doc__')
    doc = doc.strip()   # Remove leading/trailing whitespace.
    firstline = doc.split('\n')[0]
    print "DOC:     ", firstline

>>> interrogate('a string')     # String object
CLASS:    str
ID:       141462040
TYPE:     <type 'str'>
VALUE:    'a string'
CALLABLE: No
DOC:      str(object) -> string


>>> interrogate(42)             # Integer object
CLASS:    int
ID:       135447416
TYPE:     <type 'int'>
VALUE:    42
CALLABLE: No
DOC:      int(x[, base]) -> integer


>>> interrogate(interrogate)    # User-defined function object
NAME:     interrogate
CLASS:    function
ID:       141444892
TYPE:     <type 'function'>
VALUE:    <function interrogate at 0x86e471c>
CALLABLE: Yes
DOC:      Print useful information about item.
- 告知python版本等
>>> python

- 获取keywords
>>> help()
help> keywords

- 获取modules
>>> help('modules')

- 获取python可执行路径
>>> import sys
>>> sys.executable
'/usr/local/bin/python'

- 获取系统平台
>>> sys.platform
'linux2'

- 获取系统版本
>>> sys.version
'2.2.2 (#1, Oct 28 2002, 17:22:19) \n[GCC 3.2 (Mandrake Linux 9.0 3.2-1mdk)]'
>>> sys.version_info
(2, 2, 2, 'final', 0)

- 获取系统支持最大的整数
>>> sys.maxint
2147483647

- 获取参数
>>> sys.argv
['']

- 获取模块搜索路径
>>> sys.path

- 获取当前装入的模块
>>> sys.modules

>>> help('modules keywords')

- 获取模块的属性和方法
>>> dir(keyword)

- 文档字符串
>>> Person.__doc__

- 对象的名称是什么?
- 这是哪种类型的对象?
- 对象知道些什么?
- 对象能做些什么?
- 对象的父对象是谁?

转载于:https://www.cnblogs.com/iiiiiher/p/8295275.html

相关文章:

  • Qt中连接到同一signal的多个slots的执行顺序问题
  • 如何隐藏 video 元素的下载按钮
  • 【Android】自动提示匹配之AutoCompleteTextView
  • 9、ABPZero系列教程之拼多多卖家工具 拼团提醒类库封装
  • 【Android】时间与日期Widget(DatePicker 与 TimePicker)
  • 表单
  • 面试题——二维数组中的查找
  • 使用java poi解析表格
  • 【Android】如何查看每个方法所花费的时间从而进行Performance的调优
  • docker-compose命令
  • 你还在迭代和递归吗?
  • 受欢迎的牛
  • appium自动化安装(一)
  • Template Method模板方法
  • UVA 10603 倒水问题
  • 【译】理解JavaScript:new 关键字
  • CAP理论的例子讲解
  • download使用浅析
  • emacs初体验
  • JavaScript函数式编程(一)
  • js学习笔记
  • Linux快速复制或删除大量小文件
  • mongodb--安装和初步使用教程
  • React 快速上手 - 07 前端路由 react-router
  • React+TypeScript入门
  • React组件设计模式(一)
  • tweak 支持第三方库
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 区块链分支循环
  • 使用Swoole加速Laravel(正式环境中)
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 小程序button引导用户授权
  • 移动端 h5开发相关内容总结(三)
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 阿里云ACE认证之理解CDN技术
  • 说说我为什么看好Spring Cloud Alibaba
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (3)选择元素——(17)练习(Exercises)
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (篇九)MySQL常用内置函数
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (转)Windows2003安全设置/维护
  • (转)重识new
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • ***监测系统的构建(chkrootkit )
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET NPOI导出Excel详解
  • .net 受管制代码