Menu
CoddyTech

생성자 (_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_count

new()에 전달하는 인수는 객체를 반환하는 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에 관한 강의에서처럼 말이죠.

challenge icon

챌린지

쉬움

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)
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: 온라인 GDScript 컴파일러