我需要获取

Python包中所有类的列表.

起初我得到所有文件名(它工作正常,从stackoverflow获取):

from os import listdir, getcwd

from os.path import isfile, join

mypath = os.getcwd()

onlyfiles = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]

然后我检查所有文件,它不能正常工作:

for x in onlyfiles:

for name, obj in inspect.getmembers(x):

if inspect.isclass(obj):

print obj

输出是:

....

但是,以下代码正常工作:

for name, obj in inspect.getmembers(example.py):

if inspect.isclass(obj):

print obj

你能帮我搞清楚错误是什么吗?

最佳答案 inspect.getmembers()处理对象,并传入字符串. Python不知道这些字符串包含文件名,或者将这些文件名视为要导入的模块.

您必须导入inspect.getmembers()的文件才能工作.因为您正在使用当前目录中的文件,所以您应该只能将它们全部导入:

import importlib

for x in onlyfiles:

module = importlib.import_module(x)

for name, obj in inspect.getmembers(module):

if inspect.isclass(obj):

print obj

请注意,inspect.getmembers()接受第二个参数,该谓词允许您过滤方法返回的内容.您可以在这里使用inspect.isclass()作为谓词,而不是手动过滤:

for x in onlyfiles:

module = importlib.import_module(x)

for name, obj in inspect.getmembers(module, inspect.isclass):

print obj

查看python包中所有方法_获取Python包中的所有类名相关推荐

  1. python中__init__方法_关于python中__init__方法理解

    在理解__init__方法之前,我们需要搞明白,什么时候才需要用到的这个方法 什么是__init__? __init__方法在python中是类的初始化,通俗来讲,就是每次只要你去创建一个类的实例对象 ...

  2. python中repr方法_(转)Python中的常见特殊方法—— repr方法

    在Python中有些方法名.属性名的前后都添加了双下划线,这种方法.属性通常都属于Python的特殊方法和特殊属性,开发者可以通过重写这些方法或者直接调用这些方法来实现特殊的功能.其实前面见过的构造方 ...

  3. python查看包的路径_获取python及三方包的版本,安装路径等信息

    #coding:utf-8 #yys #1.1________获取python的版本号信息________ import sys python_version1=sys.version python_ ...

  4. python计算文件大小的方法_使用Python计算目录的大小?

    拉丁的传说 这将遍历所有子目录; 汇总文件大小:import osdef get_size(start_path = '.'):    total_size = 0    for dirpath, d ...

  5. python 豆瓣评论分析方法_使用python抓取豆瓣top250电影数据进行分析

    抓取豆瓣Top250电影数据的链接和电影名称 代码如下: import urllib.request as urlrequest from bs4 import BeautifulSoup impor ...

  6. java中gettext方法_深入理解Java中方法的参数传递机制

    形参和实参 我们知道,在Java中定义方法时,是可以定义参数的,比如: public static void main(String[] args){ } 这里的args就是一个字符串数组类型的参数. ...

  7. python中json方法_在python中使用JSON库(通用方法),json,的,常用

    dumps 方法 Python 数据结构转换为 JSON: import json data = { 'name' : 'ruci', 'key' : 12, 'url' : 'http://127. ...

  8. python os模块安装方法_基于python中pygame模块的Linux下安装过程(详解)

    一.使用pip安装Python包 大多数较新的Python版本都自带pip,因此首先可检查系统是否已经安装了pip.在Python3中,pip有时被称为pip3. 1.在Linux和OS X系统中检查 ...

  9. python中类的定义方法_在Python中定义类变量的正确方法

    这两种方法都不一定正确或不正确,它们只是两种不同的类元素:方法__init__之外的元素是静态元素:它们属于类. __init__方法中的元素是对象(self)的元素:它们不属于类. 使用一些代码可以 ...

最新文章

  1. 解决idea控制台打印乱码问题
  2. python turtle画椭圆-python turtle 绘制太极图的实例
  3. ram在计算机网络中表示的是,2018年职称计算机考试题库(20)
  4. PostgreSQL学习笔记9之事务隔离
  5. 杭电acm 2177 取(2堆)石子游戏(威佐夫博弈)
  6. python运算符号输入_【Python】【运算符】
  7. 输出一个文件的最后n行数据,如果文件总行数不足n行,则显示全部数据
  8. java取linux本地xml,java-使用apache poi读取.xlsx文件会在Linux机器...
  9. python之列表生成式
  10. python 删除断点_给python 初学者的四条忠告,减少一些没必要的麻烦
  11. 聚类算法实践——PCCA、SOM、Affinity Propagation
  12. java trrows处理_检查表并根据同一表中两个匹配列的值使tr内容加粗
  13. JVM垃圾收集算法及垃圾收集器
  14. 基于JSP的网上订餐管理系统
  15. ROS节点运行管理launch文件
  16. Docker学习(二):安装软件
  17. libreCAD使用
  18. maven打包时打包指定的lib文件夹
  19. 如何将1寸证件照片改为两寸,如何调整证件照片背景?
  20. MFC-Toolbar(24位真彩色)

热门文章

  1. 图片上传的两种方式(前端和后端)
  2. [转载]Linux SWAP 交换分区配置说明
  3. 想编程,是勤奋自学还是去培训班学习?
  4. 【Opencv】Python+openCV实现全景图拼接(左右两张图片拼接成一张全景图)
  5. 怎么写好一份数据分析报告
  6. dom4j的Element
  7. 加入域时提示“不能访问网络位置”
  8. echo回音消除方案
  9. 蓝的成长记——追逐DBA(20):何故缘起,建库护航 (二次发布-练习使用markdown编辑)
  10. 加载java连接sqlserver驱动_sqlserverdriver配置方法 jdbc连接sqlserver