从另一个 class 添加到 python 中的 for 循环
Adding to a for loop in python from another class
见谅,我是初学者...
简而言之,我试图在 python 中添加一个单独的 classes for 循环。以下是详细信息...
我正在用 python 和 pygame 制作游戏。我的所有 'states'(例如开始状态、游戏状态、游戏结束状态等)都有一个基础 class,其中包括一个通过 pygame 进行循环检查的函数s 'events'(例如退出程序、按下某个键等)。
下面是 parent 方法...有效。
def events(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
self.quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
self.quit()
下面是孩子的方法。它想添加一个 'key up event' 到已经存在的 'exit' 和 'escape' 事件...
def events(self):
super().events()
for event in pygame.event.get():
if event.type == pygame.KEYUP:
self.start_state = False
发生的事情是代码卡在 parents class for 循环中并忽略它下面的所有内容。我还尝试在 childs for 循环下面调用 super,这只会导致它卡在 childs for 循环中,而忽略了 parents.
我想一个解决方案是为子 class 事件制作一个单独的方法,但我仍然想知道我尝试这样做的方式是否可行,这样我就可以避免一堆独立的函数。
谢谢。
而不是在 events
方法中调用循环 (for event in pygame.event.get():
),最好有单独的方法来处理事件,但将它们放在其他地方
class Base():
def events(self):
for event in pygame.event.get():
self._proceed_event(event)
def _process_event(self, event):
if event.type == pygame.QUIT:
self.quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
self.quit()
class Child(Base):
def _process_event(self, event):
if event.type == pygame.KEYUP:
self.start_state = False
super()._proceed_event(event)
见谅,我是初学者...
简而言之,我试图在 python 中添加一个单独的 classes for 循环。以下是详细信息...
我正在用 python 和 pygame 制作游戏。我的所有 'states'(例如开始状态、游戏状态、游戏结束状态等)都有一个基础 class,其中包括一个通过 pygame 进行循环检查的函数s 'events'(例如退出程序、按下某个键等)。
下面是 parent 方法...有效。
def events(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
self.quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
self.quit()
下面是孩子的方法。它想添加一个 'key up event' 到已经存在的 'exit' 和 'escape' 事件...
def events(self):
super().events()
for event in pygame.event.get():
if event.type == pygame.KEYUP:
self.start_state = False
发生的事情是代码卡在 parents class for 循环中并忽略它下面的所有内容。我还尝试在 childs for 循环下面调用 super,这只会导致它卡在 childs for 循环中,而忽略了 parents.
我想一个解决方案是为子 class 事件制作一个单独的方法,但我仍然想知道我尝试这样做的方式是否可行,这样我就可以避免一堆独立的函数。
谢谢。
而不是在 events
方法中调用循环 (for event in pygame.event.get():
),最好有单独的方法来处理事件,但将它们放在其他地方
class Base():
def events(self):
for event in pygame.event.get():
self._proceed_event(event)
def _process_event(self, event):
if event.type == pygame.QUIT:
self.quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
self.quit()
class Child(Base):
def _process_event(self, event):
if event.type == pygame.KEYUP:
self.start_state = False
super()._proceed_event(event)