如何在Python中更新“自”变量?

时间:2019-02-09 04:35:27

标签: python-3.x

我在理解如何实例化一个类以及更新实例变量方面遇到麻烦。如果我__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.aself.d的行。

1 个答案:

答案 0 :(得分:1)

设置了self.sheetself.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}
            """