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

Python类方法报错:Bullet.display()需0参却传入1个的原因解析

TypeError报错原因解析

这个错误的本质是违反了Python类实例方法的定义规则:

当你通过bullet.display()这种实例对象调用方法的方式执行代码时,Python会自动把当前的bullet实例作为第一个参数传递给display方法,但你定义的display()方法没有声明任何参数来接收这个自动传入的实例,因此触发了"takes 0 positional arguments but 1 was given"的类型错误。

另外补充一点:你在display里直接用Bullet.x、Bullet.y访问的是类的静态属性,但实际场景中每个子弹实例应该有自己独立的坐标属性,正确的写法应该用实例自身的属性。

正确的写法

修改display方法,添加self参数(这是Python实例方法的必填参数,用来指代当前实例),同时把类属性访问改为实例属性访问:

class Bullet:
    ...
    def display(self):
        pg.draw.circle(screen, blue, (self.x, self.y), 2)

这样调用bullet.display()时,Python会自动把bullet实例传入self,方法就能正确获取当前子弹的坐标并绘制了。

内容的提问来源于stack exchange,提问作者Lê Trần Nam Khánh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:36:25