You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现TextInput/NumericInput类遇参数错误,求修复方案

问题修复方案

错误原因

报错TypeError: NumericInput.__init__() missing 1 required positional argument: 'num'是因为你定义的NumericInput构造方法要求必须传入num参数,但示例代码中是无参创建实例NumericInput(),参数不匹配。同时你的代码还存在不符合需求的问题:父类TextInput没有实现需求要求的add和get_value方法,而是自定义了getTxt方法。

修正后的完整代码

class TextInput:
    def __init__(self):
        # 初始值设为空字符串,无需强制传入参数
        self.value = ""

    def add(self, character):
        # 实现添加字符的方法
        self.value += character

    def get_value(self):
        # 返回当前值的方法
        return self.value


class NumericInput(TextInput):
    def add(self, character):
        # 重写add方法,仅添加数字字符
        if character.isdigit():
            super().add(character)


if __name__ == '__main__':
    input = NumericInput()
    input.add("1")
    input.add("a")
    input.add("0")
    print(input.get_value())  # 输出: 10

关键修正点

  • 构造方法调整:将TextInput和NumericInput的构造方法改为无参形式,初始值设为空字符串,匹配示例代码的调用方式。
  • 对齐需求方法:给TextInput添加add和get_value方法,严格符合需求定义。
  • 简化子类逻辑:NumericInput重写add方法时,仅判断字符是否为数字,是则调用父类的add方法,复用父类的value属性,避免重复维护状态。
  • 优化判断逻辑:去掉isinstance(value, int)的判断,因为示例中传入的是字符串类型的数字,isdigit()已能满足字符串数字的校验需求。

内容的提问来源于stack exchange,提问作者Barney-LoveStudy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 00:32:57