클래스 패턴
객체 속성과 일치시키기
클래스 패턴은(는) CoddyKit의 무료 Python Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Python Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
객체와 일치시키기
클래스 패턴을 사용하면 match가 객체의 형식을 확인하고 속성을 한 번에 꺼낼 수 있습니다. 각 절 안에서 생성자 호출처럼 보이는 형태로 작성합니다.
형식만 확인하기
빈 괄호를 사용하는 클래스 패턴은 해당 클래스의 모든 인스턴스와 일치합니다.
def kind(value):
match value:
case int():
return 'an integer'
case str():
return 'a string'
case _:
return 'something else'
print(kind(5))
print(kind('hi'))
print(kind([1]))이름으로 속성 캡처하기
괄호 안에 attr=name을 작성하면 인스턴스와 일치시키면서 이름이 지정된 속성을 변수에 연결할 수 있습니다.
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
p = Point(3, 4)
match p:
case Point(x=px, y=py):
print('point at', px, py)특정 속성 값과 일치시키기
속성이 리터럴과 같아야 한다고 지정할 수 있습니다. 이 절은 x축 위에 있는 Point와만 일치합니다.
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
def describe(p):
match p:
case Point(x=0, y=0):
return 'origin'
case Point(x=x, y=0):
return 'on x-axis at ' + str(x)
case Point():
return 'elsewhere'
print(describe(Point(0, 0)))
print(describe(Point(5, 0)))
print(describe(Point(1, 1)))__match_args__를 사용한 위치 패턴
클래스가 __match_args__를 정의하면 속성을 위치로 일치시킬 수 있습니다. 데이터 클래스는 필드 순서를 바탕으로 이를 자동 설정합니다.
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
p = Point(3, 4)
match p:
case Point(px, py):
print(px, py)__match_args__ 직접 정의하기
일반 클래스에서는 __match_args__에 위치로 사용할 속성의 이름을 지정하는 튜플을 설정합니다.
class Point:
__match_args__ = ('x', 'y')
def __init__(self, x, y):
self.x = x
self.y = y
match Point(1, 2):
case Point(a, b):
print(a, b)클래스별로 분배하기
클래스 패턴을 사용하면 서로 관련된 형식들의 모음에 대해 각 형식을 자체 절로 처리하는 깔끔한 분배기를 만들 수 있습니다.
from dataclasses import dataclass
@dataclass
class Circle:
radius: float
@dataclass
class Square:
side: float
def area(shape):
match shape:
case Circle(radius=r):
return 3.14159 * r * r
case Square(side=s):
return s * s
print(area(Circle(2)))
print(area(Square(3)))클래스 패턴 중첩하기
클래스 패턴은 중첩할 수 있습니다. 필드 자체가 객체인 경우 다른 클래스 패턴으로 일치시킬 수 있습니다.
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
@dataclass
class Line:
start: Point
end: Point
line = Line(Point(0, 0), Point(3, 4))
match line:
case Line(start=Point(x=0, y=0), end=Point(x=ex, y=ey)):
print('from origin to', ex, ey)내장 형식과 결합하기
내장 형식은 값을 캡처하는 단일 위치 인수를 지원합니다. int(n)은 정수와 일치하고 이를 n에 연결합니다.
def label(value):
match value:
case int(n):
return 'int ' + str(n)
case str(s):
return 'str ' + s
case _:
return 'other'
print(label(7))
print(label('hi'))클래스 패턴을 사용할 때
이벤트 객체, AST 노드, 도형 계층 구조처럼 객체의 형식과 속성 값이 모두 로직을 결정할 때 클래스 패턴을 사용하면 좋습니다. 클래스 패턴은 장황한 isinstance 검사와 속성 접근을 대신합니다.
위치와 키워드 섞기
함수 호출과 마찬가지로 하나의 클래스 패턴에서 위치 하위 패턴과 키워드 하위 패턴을 섞어 사용할 수 있습니다. 위치 패턴은 __match_args__ 순서를 사용하고, 키워드 패턴은 속성 이름을 명시적으로 지정합니다.
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
z: int
p = Point(1, 2, 3)
match p:
case Point(x, y, z=depth):
print(x, y, depth)빠른 확인
Point(x=0, y=y) 패턴은 무엇과 일치하나요?
복습
객체 속성을 기준으로 일치시키는 방법을 배웠습니다.
ClassName()은 형식을 확인합니다.attr=name은 속성을 연결하고, 리터럴은 정확한 값을 요구합니다.__match_args__는 위치 기반 일치를 활성화합니다.- 클래스 패턴은 중첩할 수 있으며 형식 계층 구조에 따라 분배할 수 있습니다.
자주 묻는 질문
“클래스 패턴” 강의는 무료인가요?
네 — “클래스 패턴” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Python Academy 강의 전체를 잠금 해제할 수 있습니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“클래스 패턴”에서 뭘 배우나요?
객체 속성과 일치시키기 브라우저에서 직접 실행하는 실습 코드로 Python Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Python Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Python Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“클래스 패턴” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Python Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Python Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.