我试图从方法中获得dict
,到目前为止我能够获得方法名称及其参数(使用inspect模块),但我面临的问题是我想要也有默认参数(或参数类型)。从方法中得到一个字典?
这基本上是我的单元测试:
class Test:
def method1(anon_type, array=[], string="string", integer=12, obj=None):
pass
target = {"method1": [
{"anon": "None"},
{"array": "[]"},
{"string": "str"},
{"integer": "int"},
{"obj": "None"}]
}
method1_dict = get_method_dict(Test().method1)
self.assertEqual(target, method1_dict)
在这里,我尝试使用检查获得方法:
>>> import inspect
>>> class Class:
... def method(self, string='str', integer=12):
... pass
...
>>> m_desc = inspect.getargspec(Class().method)
>>> m_desc
ArgSpec(args=['self', 'string', 'integer'], varargs=None, keywords=None, defaults=('str', 12))
>>>
,但我的问题是与默认ARGS,如你所见:
>>> class Class:
... def method(self, no_def_args, string='str', integer=12):
... pass
...
>>> m_desc = inspect.getargspec(Class().method)
>>> m_desc
ArgSpec(args=['self', 'no_def_args', 'string', 'integer'], varargs=None, keywords=None, defaults=('str', 12))
如您所见,no_def_args
不在默认值中,因此尝试将参数与其默认参数进行匹配是个问题。
工作,我不知道,如果你不命令你的论点是一个语法错误,是的,我知道如何切片清单,谢谢! – igorgue 2009-07-05 18:44:49