谁是谁的子类型

👁️ 3 人浏览 💬 0 人评论 ❤️ 添加收藏

(每道题开头都有同一段:PARENT 是类型的父子关系(int→num、float→num、num→any、str→any、bool→any);is_sub(a, b) 判 a 是不是 b 的子类型(自反);ok_arg(param, arg) 判实参能不能传给形参。)

问 int 是不是 num 的子类型、str 是不是 num 的子类型:

PARENT = {"int": "num", "float": "num", "num": "any", "str": "any", "bool": "any"}


def is_sub(a, b):
    """a 是不是 b 的子类型:沿 PARENT 往上找,找到 b 就是(自反:a<:a)。"""
    x = a
    while True:
        if x == b:
            return True
        if x not in PARENT:
            return False
        x = PARENT[x]


def ok_arg(param, arg):
    """实参类型 arg 能不能传给形参类型 param:arg 是 param 的子类型即可。"""
    return is_sub(arg, param)

print(str(is_sub("int", "num")) + "/" + str(is_sub("str", "num")))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论