问题描述
我需要检查扩展我的基类的任何子类的所有方法的返回类型。我知道如何检查父类(假设我希望返回的是字典):
# decorator for class methods
def check_is_dict(fun):
def check_wrapper(*args,**kwargs):
ret = fun(*args,**kwargs)
if not isinstance(ret,dict): # check the return type
raise TypeError("Wrong return type")
return ret
return check_wrapper
class ParentClass:
@check_is_dict
def foo(self):
return {str(i): i for i in range(10)} # dummy dict
@check_is_dict
def bar(self):
return {str(i): i for i in range(10)} # dummy dict
但是我需要一种方法来隐式检查子类的返回类型,例如定义:
class ChildClass(ParentClass):
def my_method(self):
return [i for i in range(10)] # dummy list
由于返回类型错误,我希望对ChildClass().my_method()
的调用失败。我认为使用元类是正确的方法,但我不知道如何进行。
最终目标是检查返回类型是否为子类的任何方法,而不必直接修饰子类的方法。
非常感谢大家。祝您有老鼠节:)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)