【发布时间】:2020-03-29 12:23:29
【问题描述】:
这是我无法工作的代码。就是说当我尝试使用player1.score 获取 player1 和 player2 分数时,我的对象没有 score 属性。我检查了缩进错误,但没有找到。我不确定为什么缺少分数,因为我已经给了它self。我引入了带有player1 = Player(PLAYER1, 1, DEFAULT_SETS) 的类对象,其中 PLAYER1 和 DEFAULT_SETS 是我在设置文件中设置的变量。错误出现在 Game 类中代码的 #points 部分。
class Game:
#Init function to start the game variables
def __init__(self):
pg.init()
self.screen = pg.display.set_mode((WIDTH, HEIGHT))
pg.display.set_caption(TITLE)
self.clock = pg.time.Clock()
pg.key.set_repeat(500,100)
#self.screen_scenario = WELCOME
self.load_data()
self.Game_Deuce = False
self.Game_Tiebreaker = False
#self.Game_Winner = False
self.sets = DEFAULT_SETS
self.serve = random.choice([1,2])
#Function to start a new game
def new(self):
self.paused = False
self.screen.fill(DARKGREEN)
player1 = Player(PLAYER1, 1, DEFAULT_SETS)
player2 = Player(PLAYER2, 0, DEFAULT_SETS)
#Function to run the scoreboard
def run(self):
self.playing = True
#pg.mixer.music.play(loops=-1)
#pg.mixer.music.set_volume(BG_MUSIC_VOLUME)
while self.playing:
self.dt = self.clock.tick(FPS) / 1000
self.events()
if not self.paused:
self.update()
self.draw()
#Points
self.draw_text(str(POINTS[player1.score]), self.points_font, 180, YELLOW, POINTS_BOX_X_2, POINTS_BOX_Y_2)
self.draw_text(str(POINTS[player2.score]), self.points_font, 180, YELLOW, POINTS_BOX_X_1, POINTS_BOX_Y_1)
这是一个单独的文件,但已正确导入:
class Player:
def __init__(self, name, serving, sets):
self.name = name
sets = sets
self.score = int(0)
self.games = int(0)
self.sets = int(0)
self.advantage = False
if serving == 1:
self.serving = True
【问题讨论】:
-
确保重启python进程以检查重新导入错误。如果您将其作为脚本运行,则应该不是问题。
-
请使用错误的完整追溯更新您的问题。
-
在函数
new中设置player1 = Player(PLAYER1, 1, DEFAULT_SETS)。player1是该函数的本地函数,因此您不能在函数run中使用它。顺便说一句,你的缩进看起来很糟糕。new和run真的应该是__init__方法的本地函数吗? -
@mathtick 难以置信,这确实有效。非常感谢我把头发拉出来了……
-
是的,应该有一个常见原因的错误流程图。 Stack-overflow几乎是这样,但不是真的。
标签: python oop object attributes