2024 국가직9급 컴퓨터일반 18번 해설 — 파이썬 클래스
문제
다음 파이썬 코드는 std 변수에 저장된 각각의 Student 객체에 대해 학생 id 및 국어, 영어 성적의 평균을 출력한다. (가) ~(다)에 들어갈 내용을 바르게 연결한 것은? class Student: def __init__(self, id, kor, eng): self.id = id self.kor = kor self.eng = eng def sum(self): return self.kor + self.eng def avg(self): return (가) std = [ Student("ok", 90, 100), Student("pk", 80, 90), Student("rk", 80, 80) ] for to in (나) : print( (다) ) (가) (나) (다)
- ① self.sum() / 2 std to.id, to.avg() ← 정답
- ② self.sum() / 2 Student Student.id, Student.avg()
- ③ sum(self) / 2 std to.id, to.avg(self)
- ④ sum(self) / 2 Student Student.id, Student.avg(self)
선지별 해설
① self.sum() / 2 std to.id, to.avg()
이 선지 진술은 옳음(O)
인스턴스 메서드 안에서는 self.sum()으로 같은 객체의 합계 메서드를 호출할 수 있다. std의 각 객체를 to로 받아 id와 평균 메서드 결과를 출력하면 된다.
② self.sum() / 2 Student Student.id, Student.avg()
이 선지 진술은 틀림(X)
순회 대상은 Student 클래스가 아니라 Student 객체들이 들어 있는 std 리스트여야 한다. id와 avg도 개별 객체 변수인 to를 통해 접근해야 한다.
③ sum(self) / 2 std to.id, to.avg(self)
이 선지 진술은 틀림(X)
sum(self)는 Student 객체가 반복 가능한 객체가 아니므로 적절하지 않다. 인스턴스 메서드 호출도 to.avg()처럼 self를 자동 전달하게 해야 한다.
④ sum(self) / 2 Student Student.id, Student.avg(self)
이 선지 진술은 틀림(X)
순회해야 할 대상은 std 리스트이고, 평균 계산은 self.sum() / 2가 맞다. 클래스 이름으로 인스턴스 속성을 직접 출력하는 형태도 올바르지 않다.
핵심 요약 (Q&A)
- Q. 2024 국가직9급 컴퓨터일반 18번의 핵심 쟁점은 무엇인가?
- A. 2024 국가직9급 컴퓨터일반 18번은 파이썬 클래스에 관한 문항으로, "옳은 것"을 고르는 문제입니다.
- Q. 2024 국가직9급 컴퓨터일반 18번의 정답은?
- A. 정답은 ①번입니다. 인스턴스 메서드 안에서는 self.sum()으로 같은 객체의 합계 메서드를 호출할 수 있다. std의 각 객체를 to로 받아 id와 평균 메서드 결과를 출력하면 된다.