Menu
CoddyTech

self 키워드

Coddy GDScript 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 65개 중 4번째.

클래스에서 선언된 함수는 특정 객체에서 실행됩니다. 호출에서 점 앞에 있는 객체입니다. 함수 안에서 키워드 self는 해당 객체를 가리킵니다.

# car.gd
class_name Car
extends RefCounted

var color: String = "Red"
var model: String = "Sedan"

func describe() -> void:
	print("I am a %s %s" % [self.color, self.model])

my_car.describe()는 self를 my_car로 설정해 describe()를 실행하므로, 함수는 해당 자동차의 변수를 읽습니다. self를 직접 전달하지는 않습니다:

var my_car := Car.new()
var taxi := Car.new()
taxi.color = "Yellow"
my_car.describe() # 나는 빨간색 세단입니다
taxi.describe() # 나는 노란색 세단입니다

self.를 쓰는 것은 선택 사항입니다. 클래스 함수 안에서는 color만 써도 이미 객체의 color를 의미하므로, print("I am a %s %s" % [color, model])도 같은 역할을 합니다.

매개변수의 이름이 클래스 변수의 이름과 같을 때 self가 필요합니다. 함수 안에서 해당 이름은 매개변수를 의미하고, self.는 객체의 변수를 가리킵니다:

func repaint(color: String) -> void:
	self.color = color

self. 없이 color = color 줄은 매개변수를 자기 자신에게 복사하므로 자동차는 기존 색상을 유지합니다.

challenge icon

챌린지

쉬움

car.gd에서 Car 클래스의 두 함수를 완성하세요:

  • set_info(year, make, model)은 세 매개변수를 같은 이름의 자동차 변수에 저장합니다
  • describe()는 This car is a YEAR MAKE MODEL을 반환합니다. 예를 들어 This car is a 2020 Toyota Corolla입니다

제공된 코드는 뒤따르는 자동차의 수를 읽은 다음, 각 자동차에 대해 한 줄씩 읽습니다(year make model). 각 자동차를 생성하고, set_info()를 호출한 뒤 모든 자동차에 대해 describe()를 출력합니다. 2020 Toyota Corolla라는 줄에 대해 다음을 출력합니다:

This car is a 2020 Toyota Corolla

코드는 car.gd에 작성하세요. main.gd에는 제공된 입력/출력 코드가 있으며 수정할 수 없습니다.

직접 해보기

extends Node

func _ready():
	# 제공된 입출력 코드: 그대로 유지하세요
	var count := int(OS.read_string_from_stdin())
	var cars: Array[Car] = []
	for i in count:
		var parts := OS.read_string_from_stdin().split(" ")
		var car := Car.new()
		car.set_info(int(parts[0]), parts[1], parts[2])
		cars.append(car)
	for car in cars:
		print(car.describe())
quiz icon실력 점검

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

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

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