Python:RaceCourse类addFrog()方法参数不匹配报错求助
解决TypeError: addFrog() takes 1 positional argument but 2 were given问题
这问题太典型啦——就是方法定义和调用时的参数数量没对上导致的!
问题根源
你调用course.addFrog(julie)的时候,其实悄悄传了两个参数:
- 第一个是隐式的
self(也就是course这个RaceCourse实例本身,Python会自动传递) - 第二个是你显式传的
julie青蛙对象
但你定义的addFrog方法只声明了self这一个参数,Python自然会报错说参数不匹配。
修复方案
你需要给addFrog方法加一个参数用来接收要添加的青蛙实例,同时建议在RaceCourse类里加一个属性存储这些青蛙(方便后续比赛逻辑使用):
- 先在RaceCourse的
__init__方法里初始化存储青蛙的列表:
class RaceCourse: def __init__(self): # 假设你已经有初始化self.turtle的代码 self.frogs = [] # 新增:用来保存所有添加的青蛙 # 其他初始化逻辑...
- 修改
addFrog方法,添加接收青蛙的参数:
def addFrog(self, frog): self.frogs.append(frog) # 把传入的青蛙实例存到赛道对象里 self.turtle.pu() spacing = 350/(Frog.lastBib+1) Frog.height -= spacing self.turtle.goto(-250, Frog.height)
为什么这样改?
现在调用course.addFrog(julie)时,Python会自动把course作为self,把julie作为frog参数传递进去,参数数量完全匹配,就不会再触发TypeError了。而且把青蛙实例存到self.frogs里,后续你要实现比赛逻辑(比如让所有青蛙前进)的时候,就能直接从这个列表里取出所有参赛青蛙啦。
内容的提问来源于stack exchange,提问作者sam
相关产品推荐
相关产品推荐

