강의

멘토링

로드맵

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

주무세요님의 프로필 이미지
주무세요

작성한 질문수

고도 엔진(Godot Engine)을 통한 게임 개발 박치기!! - 기본 개념부터 실전 게임 제작까지 한방에!

상속 씬 (3)

46. 상속씬(3) 수업 질문

작성

·

13

0

  1. 상속씬(3)의 수업 중 11:31초 부근입니다.

func _ready()에서는 super()를 통해서 -ready의 기능을 오버라이딩 했는데,
func on-area-entered에서는 super()를 사용하지 않았습니다.

그 이유는 super()가 -ready에서만 한번 해주면 다른 함수들을 포함해서 전체적으로 오버라이딩이 되기 때문인가요,

아니면 원래는 일일이 super()를 해줘야 되지만, on-area-entered에서는 오버라이딩 할것이 없기 때문에 하지 않은것인가요?



참고로, 파이썬에서는 super()를 아무데서나 한번 해주면 부모 클래스의 모든 메서드와 변수를 상속받습니다

답변 2

0

코드박치기님의 프로필 이미지
코드박치기
지식공유자

안녕하세요.
파이썬의 super()과 다르게, super() 구문이 들어간 해당 메서드(부모 클래스)만 실행된다고 보시면 됩니다.
따라서 부모 클래스의 메서드를 실행하고 싶으면 일일이 super()를 써야하며,
on_area_entered에서 super()을 쓰지 않은 결과
부모 클래스의 pass 구문 조차 실행되지 않는다고 보시면 됩니다.
super()을 써봤자 pass가 실행되니까 의미없다고 보시면 되겠네요.

파이썬에서의 super(). something() 식으로 따로 호출을 한다는 점과 차이가 있습니다.
감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다. 주무세요님.

질문해 주신 내용은 Godot 엔진과 GDScript에서의 상속 및 메서드 오버라이딩 처리에 대한 것입니다. 여러분이 이해하시는 것처럼 func _ready()에서 super()를 호출하는 것은 부모 클래스의 동일한 메서드 _ready()를 호출함으로써 부모의 초기화 과정이 포함되도록 하기 위해 사용됩니다.

Godot 및 GDScript에서는 파이썬과 유사하게 상속이 이루어지지만, 각 메서드에 대해 원하는 경우 직접적으로 super()를 호출해 부모의 메서드를 실행해야 합니다. 즉, _ready에서 super()를 호출했다고 해서 다른 메서드들이 자동으로 오버라이딩되지 않습니다. 특정 메서드 내에서 부모의 메서드를 호출하려면 각각의 메서드에서 별도로 super()를 사용해야 합니다.

따라서 on_area_entered()에서 super()를 호출하지 않은 이유는 이 메서드에서 부모 클래스의 동작을 유지할 필요가 없어서일 가능성이 큽니다. 만약 부모 클래스의 on_area_entered()가 특별한 역할을 하도록 설계되어 있다면, 이런 경우에는 해당 메서드에서도 super()를 호출해야 합니다.

유사한 질문에 대한 답변을 참조하실 수 있는 링크는 아래와 같습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

주무세요님의 프로필 이미지
주무세요

작성한 질문수

질문하기