修改一个类实例会影响另一个实例

时间:2017-10-27 03:50:41

标签: python-3.5

看看这个简单的片段

from SwitchState import SwitchState

s1 = SwitchState()
s1.add(12345, True)

s2 = SwitchState()

print(s2.get_all())

结果是:[(12345, True)]

我将该项目添加到s1,但也在s2中获得了该项目!我做错了什么?

SwitchState.py

import struct


class SwitchState(object):

    _states = []

    def add(self, timestamp, state):
        self._states.append((timestamp, state))

    def get_all(self):
        return self._states

1 个答案:

答案 0 :(得分:1)

它们都具有相同的_states,因为它是一个类属性。

class ...
  def __init__(self):
    self._states = []