来源:python中国网 时间:2020-03-22

  dir函数用着很方便,但是打印出来的结果从视觉上无法区分属性还是方法。dir函数如何判断是属性还是方法呢?大家可以借助type函数和eval函数来判断。以time模块为例,代码如下:

# -*- coding: utf-8 -*-
import time


for i in dir(time):
    if not str(i).startswith('_'):
        try:
            print(i, type(eval(('time.' + str(i)))))
        except Exception as e:
            print('error', i)
        finally:
            pass

altzone <class 'int'>
asctime <class 'builtin_function_or_method'>
clock <class 'builtin_function_or_method'>
ctime <class 'builtin_function_or_method'>
daylight <class 'int'>
get_clock_info <class 'builtin_function_or_method'>
gmtime <class 'builtin_function_or_method'>
localtime <class 'builtin_function_or_method'>
mktime <class 'builtin_function_or_method'>
monotonic <class 'builtin_function_or_method'>
perf_counter <class 'builtin_function_or_method'>
process_time <class 'builtin_function_or_method'>
sleep <class 'builtin_function_or_method'>
strftime <class 'builtin_function_or_method'>
strptime <class 'builtin_function_or_method'>
struct_time <class 'type'>
time <class 'builtin_function_or_method'>
timezone <class 'int'>
tzname <class 'tuple'>


  如果是方法则type求值后包含method。