Python 增加另一个类的分数

Python 增加另一个类的分数,python,Python,我试图在一个游戏中设置一个分数,我用python/pygame编程 我的分数在以下情况下有效: global score score = 0 伪: if player_rect.coliderect(baddie_rect): score +=1 然后我将分数显示在屏幕上 但是我想把这个分数用在另一个类的函数中。在主类中调用该函数的位置 所以 在碰撞函数中,我想增加分数,这是在一个玩家类中。但是我想在主课上打印分数。我使用的是这样的缩写代码: class player:

我试图在一个游戏中设置一个分数,我用python/pygame编程

我的分数在以下情况下有效:

global score 
score = 0
伪:

if player_rect.coliderect(baddie_rect):
      score +=1
然后我将分数显示在屏幕上

但是我想把这个分数用在另一个类的函数中。在主类中调用该函数的位置

所以

在碰撞函数中,我想增加分数,这是在一个玩家类中。但是我想在主课上打印分数。我使用的是这样的缩写代码:

class player:
   .
   .
   .
   global score 
   score = 0
   def __init(self):
       self.score=0
   def get_score(self):
       return self.score
   def set_score(self, score):
       self.score = score
   def collision():
      .
      .
      if player_rect.coliderect(baddie_rect):
           self.score +=1
当我试图在发生碰撞时获得分数时:

class main():
    player = player()
    player.colision()
    print player.get_score()
没有发生任何事情,分数不会增加

有什么建议吗

class Player:
   def __init(self):
       self.score=0
   def collision():
      if player_rect.coliderect(baddie_rect):
           self.score +=1


class main():
    player = Player()
    player.collision()
    print(player.score)

这里不需要全局变量。直接访问或设置实例属性
score
。如果您需要使用self.score执行更复杂的操作,您可以这样做,这将允许您在不更改语法的情况下定义类似getter-/setter的行为。

您的代码,除了“全局”(完全不必要)似乎是正确的之外。确实,在Python中,首选的是属性而不是访问方法,但在本例中,这不应该是错误

为什么不将collision()中的代码更改为:

然后试着看看错误是否在其他地方,也许在
player\u rect.coliderect(baddie\u rect):


我不是说错误就在那里,但我希望你能从简单到复杂

我发现分数需要是在scoreboard类开始时初始化的自对象,而不是全局变量:

#Scoreboard class
class Scoreboard:
    def __init__(self):
        self.player_score = 0
        
    def update_score(self):
        self.player_score += 1

#Main file
score = Scoreboard()

if player_rect.coliderect(baddie_rect):
  score.update_score()

print(score.player_score)
collision()
中,您增加
player.score
,而不是全局
分数。如果要更新全局分数,应调用
score=self.score
#Scoreboard class
class Scoreboard:
    def __init__(self):
        self.player_score = 0
        
    def update_score(self):
        self.player_score += 1

#Main file
score = Scoreboard()

if player_rect.coliderect(baddie_rect):
  score.update_score()

print(score.player_score)