gpt4 book ai didi

python - 从列表中调用一个类

转载 作者:行者123 更新时间:2023-12-04 15:17:37 24 4
gpt4 key购买 nike

我有 3 个看起来很像这样的类。只是不同的名字:

class CrossPipe(BasePipe):
def __init__(self, position):
BasePipe.__init__(self, position)
self.current_pos_X = 0
self.current_pos_y = 0
self.flow_rect = Rect(0,0,settings.FLOW_WIDTH, 0)
self.flow_rect.left = (settings.TUBE_SIZE / 2) - (settings.FLOW_WIDTH / 2)

def update(self):
BasePipe.update(self)
if self.current_pos_y < settings.TUBE_SIZE:
self.current_pos_y += 1
self.flow_rect.bottom = self.current_pos_y
pygame.draw.rect(self.image, settings.FLOW_COLOR, self.flow_rect, 1)

每个类都是一个游戏 block 。这些 block 随机出现在列表中,每次 4 个。

pipes = (StraightPipe, BentPipe, CrossPipe)
coming_pipes = []
done = 0
while done != 4:
coming_pipes.append(random.choice(pipes).__name__)
done += 1

这使得列表看起来像这样:

['BentPipe', 'CrossPipe', 'BentPipe', 'StraightPipe']

列表中的 4 个 block 需要显示在屏幕上,但为了在屏幕上绘制它们,我必须能够使用 placed.add(coming_pipes[0]((-2,0))) 从列表中调用它们但由于它是一个字符串列表,它给出了 placed.add("BentPipe"((-2,0)))不能调用。

那么,我如何调用列表中的类,或者将类添加到列表中而不是字符串?

顺便说一句,我没有太多编码知识。

最佳答案

不要将类的名称放在列表中;自己放类。

pipes = (StraightPipe, BentPipe, CrossPipe)
coming_pipes = []
done = 0
while done != 4:
coming_pipes.append(random.choice(pipes))
done += 1

或者更简单的说

coming_pipes = random.choices(pipes, k=4)

关于python - 从列表中调用一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64018023/

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