隐式检查Python中子类的返回类型

问题描述

我需要检查扩展我的基类的任何子类的所有方法的返回类型。我知道如何检查父类(假设我希望返回的是字典):

# 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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...