Python - 문제 미리보기
문제 2056
medium
다음 코드에서 `super()` 함수의 올바른 사용법으로 빈칸을 채워주세요:
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
class Student(Person):
def __init__(self, name, age, student_id):
______._______(name, age)
self.student_id = student_id
student = Student("김철수", 20, "2023001")
print(student.name, student.age, student.student_id)
```
```python
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
class Student(Person):
def __init__(self, name, age, student_id):
______._______(name, age)
self.student_id = student_id
student = Student("김철수", 20, "2023001")
print(student.name, student.age, student.student_id)
```
정답: B
`super()` 함수의 역할:
부모 클래스 메서드 호출:
⦁ 목적: 자식 클래스에서 부모 클래스의 메서드를 호출
⦁ 자동 참조: 부모 클래스를 자동으로 찾아서 참조
⦁ 코드 유지보수: 부모 클래스 이름이 바뀌어도 코드 수정 불필요
`super()` vs 직접 호출 비교:
`super()` 사용 (권장):
```python
class Student(Person):
def __init__(self, name, age, student_id):
super().__init__(name, age) # 부모의 __init__ 호출
self.student_id = student_id
```
직접 호출 방식:
```python
class Student(Person):
def __init__(self, name, age, student_id):
Person.__init__(self, name, age) # 부모 클래스 직접 호출
self.student_id = student_id
```
실행 순서:
1. `Student("김철수", 20, "2023001")` 호출
2. `Student.__init__(self, "김철수", 20, "2023001")` 실행
3. `super().__init__("김철수", 20)` → `Person.__init__(self, "김철수", 20)` 호출
4. `self.name = "김철수"`, `self.age = 20` 설정
5. `self.student_id = "2023001"` 설정
💡 학습 팁
이 문제를 포함한 Python 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.