类属性不会改变

时间:2015-02-26 01:38:37

标签: 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())

它仍打印出' BLACK'

3 个答案:

答案 0 :(得分:1)

每次致电project41.GameState()时,您都会创建一个 GameState对象。相反,你可能想要的是:

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

print(my_game.p_move())

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

答案 1 :(得分:1)

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

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

顺便提一下,您的_player_turn不是类属性,而是实例属性。

答案 2 :(得分:0)

您正在为每个调用创建一个GameState对象的新实例。