You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 06:40:50