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

创建类参数时崩溃:TypeError: object() takes no parameters问题排查

问题定位与解决

兄弟,这个错误的根源一眼就能看出来——你把Python类的构造函数名字写错啦!

核心问题:构造函数拼写错误

你定义的类里写的是__int__(self, x, y, width, height, end),但Python中类的初始化构造函数应该是__init__(两个下划线+init+两个下划线)。因为你写错了名字,Python会认为这个类没有自定义的初始化方法,实例化时就会调用父类object的默认构造函数,而object()是不接受任何参数的,所以你传参数的时候就会抛出TypeError: object() takes no parameters。

额外需要修复的问题

除了构造函数的拼写,你的代码还有两个小问题:

  • 构造函数内部的属性赋值没有缩进,Python是靠缩进区分代码块的,这样会直接导致语法错误;
  • move方法里的条件判断if self.x - self.vel > self.vel > self.path[0]逻辑混乱,应该改成if self.x + self.vel > self.path[0](因为此时self.vel是负数,self.x + self.vel等价于self.x - abs(self.vel),用来判断是否还没走到左边界)。

修正后的完整代码

import pygame

class enemey(object):
    walkRight = [pygame.image.load('R1E.png'), pygame.image.load('R2E.png'), pygame.image.load('R3E.png'), pygame.image.load('R4E.png'), pygame.image.load('R5E.png'), pygame.image.load('R6E.png'), pygame.image.load('R7E.png'), pygame.image.load('R8E.png'), pygame.image.load('R9E.png'), pygame.image.load('R10E.png'), pygame.image.load('R11E.png')]
    walkLeft = [pygame.image.load('L1E.png'), pygame.image.load('L2E.png'), pygame.image.load('L3E.png'), pygame.image.load('L4E.png'), pygame.image.load('L5E.png'), pygame.image.load('L6E.png'), pygame.image.load('L7E.png'), pygame.image.load('L8E.png'), pygame.image.load('L9E.png'), pygame.image.load('L10E.png'), pygame.image.load('L11E.png')]
    
    def __init__(self, x, y, width, height, end):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.end = end
        self.walkCount = 0
        self.vel = 3
        self.path = [self.x, self.end]
        # change variables <- to random for random moving? Make sure to try!

    def draw(self, gameDisplay):
        self.move()
        if self.walkCount + 1 >= 33:
            self.walkCount = 0
        if self.vel > 0:
            gameDisplay.blit(self.walkRight[self.walkCount // 3], (self.x, self.y))
            self.walkCount += 1
        else:
            # change to elif to add 3d movement
            gameDisplay.blit(self.walkLeft[self.walkCount // 3], (self.x, self.y))
            self.walkCount += 1

    def move(self):
        if self.vel > 0:
            if self.x + self.vel < self.path[1]:
                self.x += self.vel
            else:
                self.vel = self.vel * -1
                self.walkCount = 0
        else:
            if self.x + self.vel > self.path[0]:
                self.x += self.vel
            else:
                self.vel = self.vel * -1
                self.walkCount = 0

现在你再调用goblin = enemey(100, 410, 64, 64, 450)就不会报错啦,记得确保pygame的图片路径正确哦!

内容的提问来源于stack exchange,提问作者KingPika

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:53:18