Я не могу понять, что происходит здесь:Непонятные сфера поведения
class testclass:
def __init__(self):
print "new instance"
myList=[]
if __name__ == "__main__":
inst1=testclass()
inst1.myList.append("wrong")
inst2=testclass()
inst2.myList.append("behaviour")
print "I get the",inst2.myList
Выход:
new instance
new instance
I get the ['wrong', 'behaviour']
я ожидал бы, что список в inst1 ничего не знает о списке в inst2, но как-то это выглядит как область myList trascends создание экземпляра класса. Я нахожу это очень тревожным и озадачивающим, или я что-то упускаю здесь?
Спасибо!
Он будет использоваться только до назначения объекта. – Marcin
Не уверен, что я понимаю ваш комментарий. Разве переменные класса не распределяются между всеми экземплярами? Если бы myList определялся как переменная класса, а как переменная экземпляра, они все равно были бы разными, а присваивания на одном не повлияли бы на другое. Я что-то упускаю? – Pierce
Это моя точка. Если вы назначаете переменную экземпляра, вы больше не можете использовать этот экземпляр для доступа к переменной класса (если, возможно, вы не удалите переменную экземпляра). – Marcin