class State():
def __init__(self, state):
self._state = state
def change(self): #should not return anything, just changes the state
self._state = not self._state
class Coin():
def __init__(self, coin):
self._coin = []
for i in range(coin):
self._coin.append(State(False)._state)
def __str__(self):
return "coins: " + str(self._coin)
def change_state(self, n):
self._coin[n] = State(self._coin[n]).change()
我遇到的问题是change_state方法将状态从False / True更改为None,而不是将其更改为True或False。我不确定我到底做错了什么。
c1 = Coin(10)
print(c1)
coins: [False, False, False, False, False, False, False, False, False, False]
c1.change_state(4)
print(c1)
coins: [False, False, False, False, None, False, False, False, False, False]
答案 0 :(得分:2)
问题在于这一行:
self._coin[n] = State(self._coin[n]).change()
在Python中,如果函数或方法未指定返回值,则返回None
。
您应该将该行更改为:
self._coin[n] = State(self._coin[n])
self._coin[n].change()
而不是使用change()
的返回值。