Имеется такой класс:
class Poster:<...>class Poster:
def __init__(self):
self.posts = []
self.content = {}
def set_posts(self, **params):
"""Установка полей для контента
Аргументы метода:
self -- cлужебное
key -- поля, значение которых необходимо установить
"""
for iterator in range(10):
self.posts.append(params['key'])
Делаем так:
Исполняемый кодif __name__ == '__main__':
post = Poster()
post.set_posts(key={'type': None, 'content': None})
for i in range(len(post.posts)):
print (post.posts[i])
Результат{'type': None, 'content': None}
{'type': None, 'content': None}
{'type': None, 'content': None}
{'type': None, 'content': None}
{'type': None, 'content': None}
{'type': None, 'content': None}
{'type': None, 'content': None}
{'type': None, 'content': None}
{'type': None, 'content': None}
{'type': None, 'content': None}
Пока всё хорошо.
Меняем слегка исполняемый код:
Исполняемый кодif __name__ == '__main__':
post = Poster()
post.set_posts(key={'type': None, 'content': None})
post.posts[0]['type'] = 'test'
for i in range(len(post.posts)):
print (post.posts[i])
Казалось бы, чего здесь странного, мы перезаписываем значение в списке по [0]['type'] на "test".
Но...
Результат{'type': 'test', 'content': None}
{'type': 'test', 'content': None}
{'type': 'test', 'content': None}
{'type': 'test', 'content': None}
{'type': 'test', 'content': None}
{'type': 'test', 'content': None}
{'type': 'test', 'content': None}
{'type': 'test', 'content': None}
{'type': 'test', 'content': None}
{'type': 'test', 'content': None}
Почему?
Примечательно, что если в классе поменять в методе set_posts(...) на такое:
for iterator in range(10):
self.posts.append({'type': None, 'content': None})
, то всё отлично работает:
Результат{'type': 'test', 'content': None}
{'type': None, 'content': None}
{'type': None, 'content': None}
{'type': None, 'content': None}
{'type': None, 'content': None}
{'type': None, 'content': None}
{'type': None, 'content': None}
{'type': None, 'content': None}
{'type': None, 'content': None}
{'type': None, 'content': None}
Не могу понять. Вот смотрю и не могу понять. Может в глаза долблюсь, не знаю, но вот не догоняю что-то.
Благодарю за помощь заранее :)