0
Я пытаюсь добавить элементы в список в реализованным объекте:прилагая к списку в конкретизированном объекте
class Room(object):
def __init__(self, name, contents=[]):
self.name = name
self.contents = contents
living_room = Room('living room')
dining_room = Room('dining room')
print(living_room.contents) # []
print(dining_room.contents) # []
living_room.contents.append('lamp')
print(living_room.contents) # ['lamp']
print(dining_room.contents) # ['lamp']
поведение я бы ожидать, был бы для лампы, чтобы быть в living_room.contents, но не в dining_room.contents. Может кто-нибудь объяснить это?
Это правда, но я не уверен, что он рассматривает вопрос полностью. Я еще не вызывал экземпляр объекта, я добавил что-то к нему, а также добавил к другому экземпляру объекта того же класса. Это правда, что вы не можете добавлять вещи в список в экземпляр объекта? –
Насколько я знаю, аргумент по умолчанию создается в области функции, которая, в свою очередь, создается в области действия класса. Таким образом, все экземпляры «комнаты» делят список. Вы можете передать каждому экземпляру свой собственный список, если хотите, чтобы он был независимым: 'Room ('living room', contents = [])' – jab
Хорошо, спасибо. То, что я закончил, это просто положить self.contents = [] в тело метода __init__ и оставить содержимое из аргументов. –