我在理解如何实例化一个类以及更新实例变量方面遇到麻烦。如果我__init__
一系列self.x
变量,然后实例化该类,我想更新self.x =40。但是,self.x
始终保持不变。
我有种感觉,我没有把头放在类变量,初始化变量和实例化类变量上。我可以随时访问它们,但似乎无法更改它们。我已经编写了一个示例,说明了我正在尝试做的事情。
class Engine(object):
def __init__(self, board):
self.board = board
def play_game(self):
print(self.board.sheet[0])
number_one = int(input("Please enter a number."))
self.board.a = number_one
number_two = int(input("Please enter another number."))
self.board.b = number_two
number_three = int(input("Please enter a third number."))
self.board.c = number_three
number_four = int(input("Please enter a final number."))
self.board.d = number_four
print("Thank you! List updated.")
print(self.board.sheet[0])
class ScoreBoard(object):
def __init__(self):
self.a = "_____"
self.b = "_____"
self.c = "_____"
self.d = "_____"
self.sheet = [f"""
1. Number One: {self.a}
2. Number Two: {self.b}
3. Number Three: {self.c}
4. Number Four: {self.d}
"""]
new_board = ScoreBoard()
new_game = Engine(new_board)
new_game.play_game()
当我打印self.board.sheet[0]
时,我想显示数字而不是self.a
到self.d
的行。
答案 0 :(得分:1)
设置了self.sheet
至self.a
后,您需要重新计算self.d
。分配self.sheet
后,它仅包含一个简单的字符串。更改字段时,该字符串不会自动更新;你必须自己做。
更好的是,将sheet
用作方法而不是静态变量。
class ScoreBoard(object):
def __init__(self):
self.a = "_____"
self.b = "_____"
self.c = "_____"
self.d = "_____"
def sheet(self):
return f"""
1. Number One: {self.a}
2. Number Two: {self.b}
3. Number Three: {self.c}
4. Number Four: {self.d}
"""