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
相关产品推荐
相关产品推荐

