인프런 커뮤니티 질문&답변

lbm108님의 프로필 이미지
lbm108

작성한 질문수

우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)

매직 메소드(3-2)

_fields() 관련 질문있어요!

작성

·

242

0

위에서

Point4  = namedtuple('Point', 'x y x class', rename=True)

p4 = Point4(10, 20, 30, 40)

print(p4) = (x=10, y=20, _2=30, _3=40)

으로 출력됐어요.

x, y는 변수로, 중복된 x와 class는 난수를 변수로 지정한다고 설명해주셨고요.

_fields()는 필드네임을 확인하는 메소드인데, 

p4._fields()는 (x, y)만 출력됩니다.

확실한 변수가 x, y밖에 없어서 x, y만 출력되고, print문으로 써야할 때는 어쩔 수 없으니 난수가 변수로 지정되는 건가요?

print문에서는 변수가 4개 나왔는데, _fileds()로 확인할 때는 2개밖에 안나오는 이유를 확실하게 알고 싶습니다.

답변 2

0

중간에 p4를 재할당해서 그렇습니다.

그 부분 주석처리하면 정상적으로 나옵니다.

# 네임드 튜플 메소드
temp = [5238] 
# _make() : 새로운 객체 생성
p4 = Point1._make(temp)
print('_make(): 새로운 객체 생성')
print(p4)
print()

0

좋은사람님의 프로필 이미지
좋은사람
지식공유자

안녕하세요.

튜플은 중복을 허용하지 않습니다.

현재 사용되고 있는 필드 네임만 출력됩니다.

위 부분에서 확실하게 서로 다른 변수를 4개를 선언하고 rename = False 후 출력해보세요.

감사합니다.

lbm108님의 프로필 이미지
lbm108

작성한 질문수

질문하기