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 = colorself. 없이 color = color 줄은 매개변수를 자기 자신에게 복사하므로 자동차는 기존 색상을 유지합니다.
챌린지
쉬움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())
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 GDScript 컴파일러