Python_inspect的使用

The inspect module provides several useful functions to help get information about live objects such as modules, classes, methods, functions, tracebacks, frame objects, and code objects.

这个模块是针对模块,类,方法,功能等对象提供些有用的方法。

inspect模块的getargspec()方法正是用此判断来获取函数的特殊参数的。现在可以方便的获取__init__的**参数了:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

import inspect

def attr_from_locals(locals_dict):

 self = locals_dict.pop('self')

 args = inspect.getargspec(self.__init__.__func__).args[1:]

 for k in args:

  setattr(self, k, locals_dict[k])

 keywords = inspect.getargspec(self.__init__.__func__).keywords

 if keywords:

  keywords_dict = locals_dict[keywords]

  for k in keywords_dict:

   setattr(self, k, keywords_dict[k]) 

class Foo(object):

 def __init__(self, name, **kwargv):

  attr_from_locals(locals())

f = Foo('bar', color='yellow', num=1)

print f.__dict__

结果为:

1

{'color': 'yellow', 'num': 1, 'name': 'bar'}

getmembers(object[, predicate])

返回一个包含对象的所有成员的(name, value)列表。返回的内容比对象的__dict__包含的内容多,源码是通过dir()实现的。

predicate是一个可选的函数参数,被此函数判断为True的成员才被返回。

getmodule(object)

返回定义对象的模块

getsource(object)

返回对象的源代码

getsourcelines(object)

返回一个元组,元组第一项为对象源代码行的列表,第二项是第一行源代码的行号

猜你喜欢

转载自blog.csdn.net/qq_34079398/article/details/81409100