我試圖從方法中獲得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