我想找一份工作
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))
>>>
但我的问题在于
默认参数
,正如你在这里看到的:
>>> 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
不在默认值中,因此尝试将参数与其默认参数匹配是一个问题。