Python OOP中类方法内部调用另一方法未被识别问题求解
类方法间正确调用的解决方法
你的问题出在类内部调用方法的方式错误,同时存在调用时参数不匹配的问题,具体修正方案如下:
错误核心原因
在Python类的实例方法中,调用同类的其他实例方法必须通过self.方法名()的形式,而不是直接写方法名并手动传入self。另外你调用collision_test时,还遗漏了该方法定义时要求的x和y参数。
修正后的完整代码
def collision_test(self, rect, tiles, x, y): # CREATING A RECT FOR THE GAME MAP(TILES) hit_list = [] for tile in tiles: if rect.colliderect(tile): hit_list.append(tile) return hit_list def move(self, rect, x, y, tiles): # testing collisions collision_types = {'top': False, 'bottom': False, 'right': False, 'left': False} rect.x += x # 修正方法调用方式,补上缺失的x、y参数 hit_list = self.collision_test(rect, tiles, x, y) for tile in hit_list: if self.move_right == True: rect.right = tile.left
关键注意点
- 类的实例方法默认绑定当前实例,调用时通过
self访问其他方法,Python会自动将当前实例作为第一个参数(self)传入被调用方法,无需手动传递。 - 调用方法时必须保证参数数量与方法定义一致,
collision_test除了自动传入的self,还需要rect、tiles、x、y四个参数,之前的调用遗漏了x和y,这也是导致报错的原因之一。
内容的提问来源于stack exchange,提问作者CAKE
相关产品推荐
相关产品推荐

