생성자 (_init)
Coddy GDScript 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 65개 중 7번째.
new() 뒤에 모든 속성을 설정하려면 여러 줄이 필요하고, 하나를 빠뜨리기 쉽습니다. 생성자는 객체가 생성될 때 객체를 초기화합니다. GDScript에서 생성자는 _init() 메서드입니다:
# book.gd
class_name Book
extends RefCounted
var title: String
var author: String
var pages: int
func _init(book_title: String, book_author: String, page_count: int) -> void:
title = book_title
author = book_author
pages = page_countnew()에 전달하는 인수는 객체를 반환하는 new()가 실행되기 전에 자동으로 실행되는 _init()으로 전달됩니다.
var dune := Book.new("Dune", "Frank Herbert", 412)
print(dune.title) # Dune
print(dune.pages) # 412_init()에 매개변수가 있으면 new()에서 해당 매개변수를 전달해야 합니다. 인수가 없는 Book.new()는 프로그램이 실행되기 전에 오류로 보고됩니다. 기본값이 있는 매개변수는 선택 사항입니다.
func _init(book_title: String, book_author: String = "Unknown") -> void:이 생성자를 사용하면 Book.new("Notes")는 저자가 "Unknown"인 책을 생성합니다.
위의 매개변수 이름은 속성 이름과 다릅니다. 이름이 같다면 self.title = title이라고 작성하면 됩니다. self에 관한 강의에서처럼 말이죠.
챌린지
쉬움book.gd에서 Book 클래스를 완성하세요.
- 생성자
_init(book_title, book_author, page_count)는 인수를title,author,pages속성에 저장합니다. describe()는 제목을 작은따옴표로 감싸서'TITLE' by AUTHOR, PAGES pages를 반환합니다.
제공된 코드는 몇 권의 책이 입력될지 읽은 다음, 각 책에 대해 제목, 저자, 페이지 수가 ;로 구분된 한 줄을 읽습니다. 각 책을 Book.new()로 생성하고, describe()를 출력한 뒤, 마지막으로 pages 속성의 합계를 출력합니다. Dune;Frank Herbert;412 행에 대해서는 다음을 출력합니다.
'Dune' by Frank Herbert, 412 pages
Total pages: 412코드는 book.gd에 작성하세요. main.gd에는 제공된 입력/출력 코드가 있으며 수정할 수 없습니다.
직접 해보기
extends Node
func _ready():
# 제공된 입출력 코드: 그대로 유지하세요
var count := int(OS.read_string_from_stdin())
var total := 0
for i in count:
var parts := OS.read_string_from_stdin().split(";")
var book := Book.new(parts[0], parts[1], int(parts[2]))
print(book.describe())
total += book.pages
print("Total pages: %d" % total)
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 GDScript 컴파일러