Skip to main content
 首页 » 编程设计

Python之无法在类中获得 2 个方法来共享数据

2025年05月04日32开发

我正在尝试使用 python/pygame。

我做了一个简单的播放器类。

class Player(): 
  def __init__(self): 
    self.posx = 10 
    self.posy = 20 
 
 
  def render (self): 
    pygame.draw.rect(screen,(255,0,0), (self.posx,self.posy,100,100)) 
 
  def walk (self): 
    self.posx += 10 

渲染函数:

def render(): 
  player = Player() 
  player.walk() 
  player.render() 

还有循环:

running = True 
while running: 
  render() 
  for event in pygame.event.get(): 
    if event.type == pygame.QUIT: 
      running = False 

我假设此代码会在每一帧的 x 位置添加 10 个像素。但是它会在第一次渲染时将位置更新为 20 并保持在那里。

我尝试打印该值,它确实打印了行走和渲染的每一帧,因此循环正常工作,那么为什么位置没有得到更新?

请您参考如下方法:

您在每次调用 render 时都会重新创建实例。

player = Player() 
def render(player):  
  player.walk() 

这应该会更好:

running = True 
player = Player() 
 
while running: 
  render(player) 
  for event in pygame.event.get(): 
    if event.type == pygame.QUIT: 
      running = False 

编辑:

作为 timgeb,在现已删除的帖子中指出,渲染方法是完全不需要的。我把它留给了 OP,让他的原始代码风格更加清晰。