gpt4 book ai didi

python - 类型错误 : destroy() takes 0 positional arguments but 1 was given

转载 作者:太空宇宙 更新时间:2023-11-04 06:01:33 26 4
gpt4 key购买 nike

这是我尝试从列表中删除 Sprite 以使其从屏幕上删除时出现的错误。我可以通过按键调出那个 Sprite ,但是当我试图删除它时会发生这种情况。在 Purpongie 的 collision detection 的帮助下,我有点想编写自己的代码。视频。

现在我将向您展示我的,其中省略了大部分不相关的内容:

主要.py

while True:
process(Select)
H2Ps.destroy()
H2Ps.List.draw(screen)

类.py

class BaseClass(pygame.sprite.Sprite):
allsprites = pygame.sprite.Group()
def __init__(self, x, y, image_string):

pygame.sprite.Sprite.__init__(self)
BaseClass.allsprites.add(self)

self.image = pygame.image.load(image_string)

self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y


def destroy(self, ClassName):
ClassName.List.remove(self)
BaseClass.allsprites.remove(self)
del self



class H2Ps(BaseClass):
List = pygame.sprite.Group()

def __init__ (self,x,y,image_string):
BaseClass.__init__(self,x,y,image_string)
H2Ps.List.add(self)

@staticmethod
def destroy():
for test in H2Ps.List:
if (pygame.key.get_pressed()[pygame.K_ESCAPE]):
test.destroy(H2Ps)

进程.py

def process(Select):
if Select.rect.collidepoint(370,400): #How to play
if keys[pygame.K_RETURN]:
HowToPlay = H2Ps(0,0,"Images/How To Play.png")

我认为错误指出 Classes.py 中的 test.destroy(H2Ps) 有问题。我早些时候运行过它,它似乎有效,但现在我不确定我可能做了什么改变会破坏它。我将不胜感激一些解决方案。

最佳答案

您已覆盖 destroy(self, ClassName)BaseClass用你的destroy() H2Ps 中的静态方法.您需要更改其中之一的名称!

因此,当您调用 H2Ps.destroy()在 main.py 中,你正在调用你的静态方法,然后循环遍历 List :

for test in H2Ps.List:
if (pygame.key.get_pressed()[pygame.K_ESCAPE]):
test.destroy(H2Ps)

test这是一个H2Ps对象,当你做 test.destroy(H2Ps) ,因此仍然调用在 H2Ps 上定义的静态方法,不是方法 destroy(self, ClassName)BaseClass .

与其他一些语言不同,方法可以通过参数来区分,因此在 Java 中,编译器可以区分这些方法:

public void destroy(String className);
public static void destroy();

Python 不是那样工作的,它只通过名称选择要调用的方法。当您覆盖 destroyH2Ps您正在替换 destroy(self, ClassName) 的定义与 destroy() .

关于python - 类型错误 : destroy() takes 0 positional arguments but 1 was given,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24694024/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com