-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
MetaClass 3_3에서 질문입니다.
21.02.08 19:07 작성 조회수 100
0
def cus_mul(self, d):
for i in range(len(self)):
self[i] = self[i] * d
def cus_replace(self, old, new):
while old in self:
self[self.index(old)] = new
CustomList1 = type(
'CustomList1',
(list,),
{
'desc':'커스텀 리스트1',
'cus_mul':cus_mul,
'cus_replace': cus_replace
}
)
c1 = CustomList1([1,2,3,4,5,6,7,8,9])
print('Ex1 > ', c1)
print('궁금한 점 > ', c1.__dict__)
이렇게 코딩을 했을 경우
첫번째 Print문의 결과값은 [1,2,3,4,5,6,7,8,9]
두번째 Print문의 결과값은 {} 이렇게 나옵니다.
수업시간에 c1으로 인스턴스화 과정에서 [1,2,3,4,5,6,7,8,9]를 인자로 전달하면서 초기화 하였다고 말씀 해주셨는데
c1의 namespace를 확인해보니 빈 딕셔너리로 출력이 되었습니다.
c1에 인스턴스화 시점에 __call__ 함수를 통해서 [1,2,3,4,5,6,7,8,9]가 전달되어 print('Ex1 > ', c1)을 실행 했을 때 출력된다는 것을 이해했습니다.
그런데 [1,2,3,4,5,6,7,8,9]는 어디에 기억되어 있는 건가요?
답변을 작성해보세요.
0
좋은사람
지식공유자2021.02.09
안녕하세요.
뒤 부분에 배울 메타클래스를 상속해서 배우는 __new__ 메소드 등에서
넘어오는 인자를 출력하시면 값이 어디 시점에 저장되는지 알 수 있습니다.
감사합니다.
답변 1