36.8 연습문제: 리스트에 기능 추가하기 질문입니다.
, choi youngsoo님이 작성class AdvancedList(list):
testattr = []
def replace_listcomp(self, old, new):
print('self:', self)
a = [new if self[i] == old else self[i] for i in range(len(self))]
print('repaced list', a)
self = a # self를 바꿔보자
AdvancedList.testattr = a
x = AdvancedList([1, 2, 3, 1, 2, 3, 1, 2, 3])
x.replace_listcomp(1, 200)
print(x)
x.testattr
이렇게 해보면,>>> x.replace_listcomp(1, 200)
self: [1, 2, 3, 1, 2, 3, 1, 2, 3]
repaced list [200, 2, 3, 200, 2, 3, 200, 2, 3]
>>> print(x)
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> x.testattr
[200, 2, 3, 200, 2, 3, 200, 2, 3]
>>>
이런식으로 list comprehension을 쓰면, 아래처럼 class 내에서 list는 잘 replace가 되었는데 정작 self에 할당을 해도 변경이 되지 않습니다. 혹시나 해서 class attribute를 만들어보면 잘 되구요... 제가 어느 부분을 오해하고 있는 것일까요?
Re: 36.8 연습문제: 리스트에 기능 추가하기 질문입니다.
, 도장_ 관리자님이 작성포럼 상단 오른쪽에 36.8로 검색하면 이전 질문과 답변을 참조할 수 있습니다.
https://dojang.io/mod/forum/search.php?id=7&search=36.8
포럼 상단 고정에 있는 파이썬 시각화를 이용할 수 있습니다.
단계별로 실습하면서 비교해보면 코드 동작을 이해하기 쉽습니다.