AttributeError:'builtin_function_or_method'对象没有'top'属性

0 投票
1 回答
5057 浏览
提问于 2025-04-18 08:36

这里是代码:

class Enemies():
    def __init__(self):
        self.list = []
        self.number= random.randrange(8)
        self.image= pygame.image.load("C:/Users/Aitor/Desktop/Odin.png")
        self.rect= self.image.get_rect
        self.run_across= 0 #El numero que recorrera la lista

        for x in range(self.number):
            self.list.append(self.rect)
            self.list[self.run_across].top= random.randrange(20,50)
            self.list[self.run_across].left= random.randrange(20,50)
            self.run_across += 1

        self.run_across= 0

错误出现在:self.list[self.run_across].top= random.randrange(20,50)这行代码。这个代码的目的是在一个列表里保存一些随机大小的矩形,但它们的图片是一样的。我不知道为什么会出现这个错误。

1 个回答

1

self.rect 被设置成了一个函数对象:

self.rect= self.image.get_rect

然后你把它添加到了你的 list 属性里:

for x in range(self.number):
    self.list.append(self.rect)

这个异常提到的就是 builtin_function_or_method 类型;这个方法是用C语言实现的。也许你本来是想调用它呢?

self.rect = self.image.get_rect()

撰写回答