如何解决Python TypeError: __init__() missing 1 required positional argument报错
问题排查与修复方案
报错根因
- 你自定义的
Solution类__init__构造方法要求强制传入arr参数,但刷题平台的内置测试驱动逻辑为:无参数实例化Solution类,再将测试用例参数直接传入minDeletionSize方法,二者逻辑不匹配导致参数缺失报错。 - 你当前的
minDeletionSize实现逻辑和通用「删列造序」类题目的要求不符:现有逻辑是遍历判断每个字符串是否为正序/逆序,统计不符合要求的字符串数量,而题目通常要求统计不符合排序要求的列数。
修复后代码
class Solution: # 移除构造方法的自定义入参,适配平台调用规则 def minDeletionSize(self, arr): cnt = 0 # 遍历每一列判断是否符合升序要求 for col_idx in range(len(arr[0])): # 提取当前列的所有字符 col_chars = [arr[row_idx][col_idx] for row_idx in range(len(arr))] if col_chars != sorted(col_chars): cnt += 1 return cnt if __name__ == '__main__': arrays = [["cba","daf","ghi"],["a","b"],["zyx","wvu","tsr"]] obj = Solution() for arr in arrays: print(obj.minDeletionSize(arr))
调用调整说明
本地测试时也需要同步调整调用逻辑:实例化Solution类无需传入参数,直接将测试数组作为入参调用minDeletionSize方法即可。如果你的业务需求就是判断单个字符串是否为正/逆序,仅需调整方法内的判断逻辑,构造方法的修改规则不变。
内容的提问来源于stack exchange,提问作者mrq
相关产品推荐
相关产品推荐

