Я не понимаю вывод моего кода, показанного ниже. Я ожидаю увидеть:Перемещение переменных Python между объектами
1
1
, но вместо того, чтобы увидеть:
1
2
Это код в вопросе с помощью Python 2.7.3:
#!/usr/bin/python
class Test:
__tBin = {'80':0, '70':0, '60':0, '50':0,'40':0,
'30':0, '20':0, '10':0, '0':0,
'-10':0, '-20':0, '-30':0, '-40':0}
def __init__(self):
self.__tests = {'i2c_transfer':self.__tBin}
def foo(self):
self.__tests['i2c_transfer']['80'] += 1
print self.__tests['i2c_transfer']['80']
if __name__ == "__main__":
testList = list()
for i in range(1, 3):
testList.append(Test())
for i in testList:
i.foo()
Благодарности
Почему вы ожидаете этого? '__tBin' является атрибутом * class *, первый вызов' foo' изменяет его, и именно поэтому вы видите '2' второй раз. В вашем '__init__' похоже, что вы хотите сделать * копию *, но вы должны сделать это явно:' 'ic2_transfer ': self .__ tBin.copy()' – Bakuriu
А, спасибо. Как я уже сказал ниже, это был мой первый опыт использования Python, и я предполагаю, что не смотрел документацию достаточно близко, поэтому я ожидал бы того, что думал. +1 – psidhu