在for循环中调用Dataset类方法时遇TypeError错误求助
解决TypeError: Dataset.get_temp_on_date() missing required positional argument 'year'的问题
错误原因
get_temp_on_date是实例方法,你直接通过类Dataset调用它,而非先创建Dataset的实例。Python会把你传入的第一个参数"PHOENIX"当成实例方法必需的self参数,剩下的参数就少了一个,因此报错提示缺少year。
修复步骤
先创建Dataset实例
类的__init__方法需要传入csv文件名来加载数据,所以先初始化实例:# 替换为你的温度数据csv文件路径 dataset = Dataset("your_temperature_data.csv")通过实例调用方法
修改循环中的调用代码,用创建好的实例调用get_temp_on_date:year_list = list(range(1961,2017)) year_array = np.array(year_list) temps = np.zeros(len(year_array)) for i in range(1961,2017): temps[i-1961] = dataset.get_temp_on_date("PHOENIX", 12, 1, i)
补充说明
实例方法的第一个参数self是Python自动传入的——当你用实例调用方法时,Python会把实例本身作为self参数传递,你只需要传入方法定义中self之后的四个参数(city、month、day、year),这样参数数量就完全匹配了。
内容的提问来源于stack exchange,提问作者Liz C
相关产品推荐
相关产品推荐

