레고처럼? 파이썬을 사랑해! 🧱🐍

발행: (2026년 2월 7일 오후 10:20 GMT+9)
7 분 소요
원문: Dev.to

Source: Dev.to

번역을 진행하려면 번역하고자 하는 본문 텍스트를 제공해 주시겠어요? 해당 내용을 받는 대로 요청하신 대로 한국어로 번역해 드리겠습니다.

Episode 1: 첫 번째 브릭 만들기 (클래스 정의)

어릴 적에 첫 레고 세트를 받았을 때를 기억하시나요? 색색의 브릭이 쌓여 있는 모습을 보며 “가능성”이라는 순수함에 빠졌던 순간, 그리고 그 매뉴얼이 교묘하게도 “Step 1”이라며 우리를 놀라게 했던 그때 말이죠.
이제 준비하세요, 파이썬 클래스는 바로 여러분이 직접 써 내려가는 레고 조립 설명서와 같습니다. 단, 카펫 속에 작은 부품을 잃어버리는 대신 코드베이스 안에서 부품을 잃게 될 겁니다. 진행!

레고 세계에서는 본사에서 각 브릭 종류의 금형을 설계합니다. 2×4 빨간 브릭은 단순히 브릭이 아니라, 같은 마스터 디자인으로 찍힌 수천 개의 동일한 2×4 빨간 브릭 중 하나일 뿐이죠. 파이썬 클래스도 정확히 같은 방식으로 동작합니다 (덴마크식 정밀 엔지니어링은 제외).

class LegoBrick:
    """Our master blueprint for LEGO bricks"""
    pass

축하합니다! 이제… 실질적으로 쓸 수 없는 무언가를 설계했습니다. 이는 레고에서 부드러운 1×1 타일과 같은 존재—기술적으로는 브릭이지만, 흥미로운 무언가를 만들기엔 실질적으로 쓸모가 없습니다.

실제 레고 브릭은 색상, 크기, 위에 달린 작은 스터드와 같은 특성을 가집니다. 파이썬에서는 이를 **속성(attributes)**이라고 부르며, __init__()라는 특별한 메서드 안에 정의합니다—발음은 “던더 이닛”.

class LegoBrick:
    def __init__(self, color, length, width):
        self.color = color
        self.length = length
        self.width = width
        self.studs = length * width  # 스터드 자동 계산!

여기서 무슨 일이 일어나고 있나요?

  • self는 파이썬이 “지금 우리가 만들고 있는 이 특정 브릭”을 가리키는 방법입니다 (이후에 더 자세히 설명합니다).
  • 각 브릭에 색상과 치수를 부여하고, 스터드를 계산하고 있습니다.
  • __init__() 메서드는 새로운 브릭을 만들 때 자동으로 실행됩니다 (공장에서 사출 성형이 일어나는 것과 비슷합니다).

이제 재미있는 부분—실제 브릭을 만들어 봅시다:

my_red_brick = LegoBrick("red", 2, 4)
my_blue_brick = LegoBrick("blue", 2, 2)
my_weird_green_brick = LegoBrick("green", 1, 8)  # 아무도 쓰지 않는 그 한 조각

이 각각은 LegoBrick 클래스의 인스턴스이며—우리 설계도에서 찍힌 실제 물리적인 브릭입니다. 모두 같은 구조(color, length, width, studs)를 공유하지만, 값은 서로 다릅니다.

self 공개

Python이 my_red_brick = LegoBrick("red", 2, 4) 를 실행하면 다음과 같이 동작합니다:

  1. 새로운 빈 브릭 객체를 생성합니다.
  2. 그 브릭을 self 로 자동으로 __init__()에 전달합니다.

당신은 다른 인자(color, length, width)만 제공하면 됩니다. 따라서 self는 문자 그대로 “그 브릭 입장에서의 당신 자신”입니다. 마치 각 브릭이 작은 내부 독백을 하는 것과 같습니다: “나는 빨간색이고, 길이가 2단위이며, 너비가 4단위다…”.

LEGO 브릭은 그냥 가만히 있지 않습니다(대부분은 그렇지만, 저와 함께 생각해 보세요). 서로 맞물릴 수 있는 등 행동을 할 수 있습니다. 몇 가지 동작을 추가해 봅시다:

class LegoBrick:
    def __init__(self, color, length, width):
        self.color = color
        self.length = length
        self.width = width
        self.studs = length * width

    def describe(self):
        return f"A {self.color} {self.length}x{self.width} brick with {self.studs} studs"

    def can_connect_to(self, other_brick):
        # Simplified logic: bricks can connect if dimensions match
        return (self.length == other_brick.width or 
                self.width == other_brick.length)

사용해 보기

red_brick = LegoBrick("red", 2, 4)
print(red_brick.describe())
# Output: "A red 2x4 brick with 8 studs"

blue_brick = LegoBrick("blue", 4, 2)
print(red_brick.can_connect_to(blue_brick))
# Output: True - they can snap together!

클래스는 설계도입니다. 인스턴스는 그 설계도로 만든 실제 LEGO 브릭이죠. 메서드는 브릭이 할 수 있는 행동이며, 속성은 브릭이 자신에 대해 알고 있는 정보를 의미합니다.

🎯 핵심 요점

  • class 키워드는 설계도(레고 몰드 디자인)와 같은 청사진을 만듭니다.
  • __init__()는 새 인스턴스를 만들 때 실행됩니다(제조 과정).
  • self는 현재 생성되거나 사용 중인 특정 인스턴스를 가리킵니다.
  • Attributesself.attribute_name 형태로 저장되는 특성(예: color, size)입니다.
  • Methods는 클래스에 속한 동작(함수)입니다.
  • Instances는 클래스 청사진으로부터 실제로 생성된 객체입니다.

질문이 있거나 레고 비유에서 버그를 발견했나요? 아래에 댓글을 남겨 주세요! 그리고 이 시리즈가 마음에 드신다면 ❤️ 버튼을 눌러 주세요—마치 레고 위를 밟는 느낌이지만 좋은 의미로요.

Back to Blog

관련 글

더 보기 »

파이썬 연산과 함수

수식(Expression) – 피연산자와 연산자의 조합 피연산자(Operand): 연산의 대상 연산자(Operator): 연산을 나타내는 기호, 예: +, -, *, / 정확한 수식으로 표현된 연산을 프로그래밍 언어로 작성하면 컴퓨터가 정확히 계산합니다. 연산 우선 순위 – 소괄호를…