在我开始之前-张贴的代码是你的真实代码吗?在Python3.2下,它实际上对我不起作用—我已经修复了一点。首先,我改变的是:class_dict = list()
现在
^{pr2}$
在OverloadedFunction.__call__中:for fkey, function in class_dict.items():
inspect_t = inspect.getfullargspec(function)
print(inspect_t)
在member_dict.__setitem__中:if value.__class__.__name__ == "function":
class_dict[key] = value
dict.__setitem__(self,key,OverloadedFunction(key,value))
我相信这是你想要的。我从来没有得到NoneType not callable错误-通过这些修改(加上顶部的import inspect),您的代码可以工作并打印参数规范:$ python3 temp.py
FullArgSpec(args=['self', 'a', 'b'], varargs=None, varkw=None, defaults=None, kwonlyargs=[], kwonlydefaults=None, annotations={'a': , 'b': })
现在,您想要实现multimed—我所做的修改排除了这一点,因为您的多方法在每次调用__setitem__时都会被覆盖,所以您可以从那里开始工作(也许可以使用collections.defaultdict(list)和{}到{})。在