类属性不会改变

2024-10-03 06:31:00 发布

您现在位置:Python中文网/ 问答频道 /正文

class GameState:
    def __init__(self):
        '''initializes the players turn'''
        self._player_turn = 'BLACK'
    def change_player_white(self):
        self._player_turn = 'WHITE'
    def p_move(self):
        return self._player_turn

如果我打电话

project41.GameState().change_player_white()
print(project41.GameState().p_move())

它仍然打印出“黑色”


Tags: theselfmoveinitdefchangeturnclass
3条回答

每次调用project41.GameState()都是在创建一个新的GameState对象。相反,您可能需要:

my_game = project41.GameState()
my_game.change_player_white()

print(my_game.p_move())

如果您真的想要一个由类的所有实例共享的变量,请参阅文档中的Class and Instance Variables部分。你知道吗

每次对GameState()的调用都会创建一个新实例。您创建了一个实例,将播放机更改为白色,然后丢弃该播放机并在下一行创建了一个新的播放机。试试这个:

state = project41.GameState()
state.change_player_white()
print(state.p_move())

顺便说一下,_player_turn不是类属性,而是实例属性。你知道吗

您正在为每个调用创建一个游戏状态对象的新实例。你知道吗

相关问题 更多 >