비전공자 파이썬 클래스, 배워야 할까요
결론부터 말씀드리면 대부분의 사무직 실무자에게는 클래스보다 함수를 먼저, 그리고 더 깊게 익히는 것이 우선입니다. 클래스는 다루는 데이터의 종류가 늘어나고 같은 구조의 정보를 반복해서 관리해야 할 때 비로소 필요해지는 도구입니다. 즉 “배워야 하는가”의 답은 지금 하는 자동화 업무의 복잡도에 달려 있습니다.
비전공자를 위한 파이썬 함수 입문 글에서 다뤘듯, 함수는 반복되는 코드 몇 줄을 한 줄로 줄여주는 도구입니다. 클래스는 그보다 한 단계 위에 있습니다. 여러 개의 함수와 데이터를 하나의 묶음으로 관리하고 싶을 때, 그 묶음을 “찍어내는 틀”이 클래스입니다.
함수만으로 부족해지는 순간은 언제인가요
함수만으로 부족해지는 순간은 “같은 형태의 데이터를 여러 개 다루면서 그 데이터마다 관련된 동작도 같이 묶어야 할 때”입니다. 예를 들어 거래처 정보(이름, 담당자, 연락처)를 딕셔너리로 여러 개 관리하다가, 거래처마다 “미수금 계산하기”, “연락처 포맷 정리하기” 같은 동작까지 붙여야 한다면 함수와 데이터가 따로 흩어져 관리가 어려워집니다.
비전공자를 위한 파이썬 딕셔너리 배우는 법에서 본 것처럼, 딕셔너리 하나로 거래처 하나의 정보는 잘 담깁니다. 문제는 거래처가 50개, 100개로 늘어나고 각 거래처마다 반복적으로 계산하거나 검증해야 하는 로직이 붙을 때입니다. 이럴 때 딕셔너리 리스트와 함수를 따로 관리하다 보면 코드가 점점 꼬입니다.
# 함수 + 딕셔너리 방식 (거래처가 늘어날수록 관리가 번거로워짐)
def calc_unpaid(client):
return client["총액"] - client["수금액"]
clients = [
{"이름": "가나상사", "총액": 1000000, "수금액": 700000},
{"이름": "다라물산", "총액": 500000, "수금액": 500000},
]
for c in clients:
print(c["이름"], calc_unpaid(c))
# 클래스 방식 (데이터와 동작이 한 묶음으로 관리됨)
class Client:
def __init__(self, name, total, paid):
self.name = name
self.total = total
self.paid = paid
def unpaid(self):
return self.total - self.paid
def is_settled(self):
return self.unpaid() == 0
clients = [
Client("가나상사", 1000000, 700000),
Client("다라물산", 500000, 500000),
]
for c in clients:
print(c.name, c.unpaid(), c.is_settled())
두 코드는 결과가 비슷해 보이지만, 거래처 관련 로직(정산 여부 확인, 연체 기간 계산 등)이 늘어날수록 클래스 쪽이 한곳에 정리되어 있어 유지보수가 쉬워집니다. self는 “지금 다루고 있는 그 거래처 자기 자신”을 가리키는 표시라고 이해하시면 됩니다.

실무에서 클래스가 실제로 쓰이는 예시
실무 자동화 스크립트에서는 클래스를 직접 만들기보다, 이미 만들어진 라이브러리의 클래스를 “가져다 쓰는” 경험이 먼저 옵니다. 엑셀 반복 업무를 파이썬으로 자동화할 때 사용하는 pandas의 DataFrame도 사실 클래스입니다. df.sum(), df.head()처럼 점(.)을 찍어 사용하는 기능들이 바로 클래스 안에 정의된 함수(메서드)입니다.
import pandas as pd
df = pd.read_excel("거래처목록.xlsx")
print(df.head()) # DataFrame 클래스가 제공하는 메서드
print(df["수금액"].sum()) # Series 클래스가 제공하는 메서드
이 코드를 쓸 때 “DataFrame이 클래스구나”를 몰라도 실무는 가능합니다. 다만 나중에 에러 메시지에 AttributeError: 'DataFrame' object has no attribute... 같은 문구가 나올 때, 에러 메시지 읽는 법과 함께 “이 객체(클래스로 만들어진 데이터)가 이 기능을 갖고 있지 않다”는 뜻을 이해하는 데 클래스 개념이 도움이 됩니다.
지금 클래스를 배워야 하는지 판단하는 기준
아래 상황 중 두 가지 이상에 해당한다면 클래스를 배울 시점이라고 볼 수 있습니다.
- 같은 형태의 데이터(거래처, 직원, 프로젝트 등)를 반복적으로 다루고 있다
- 데이터마다 딸린 계산이나 검증 로직이 3개 이상으로 늘어났다
- 함수와 딕셔너리를 여러 파일에 나눠 관리하다 어디에 뭐가 있는지 헷갈린다
- pandas, requests 같은 라이브러리를 매일 쓰지만 “왜 점(.)으로 기능을 불러오는지” 궁금하다
반대로 아직 반복 작업 한두 개를 함수로 겨우 정리한 단계라면, 클래스보다는 파이썬 반복문(for문)과 함수, 딕셔너리를 먼저 손에 익히는 편이 낫습니다. 클래스는 개념 자체가 추상적이라, 기초가 덜 다져진 상태에서 배우면 “어디에 쓰는 건지 모르겠다”는 느낌만 남기 쉽습니다.
클래스 학습, 이렇게 순서를 잡으면 됩니다
처음에는 클래스를 직접 만들기보다 남이 만든 클래스(라이브러리)를 사용하는 데 익숙해지는 것이 먼저입니다. pandas의 DataFrame, openpyxl의 Workbook 같은 객체를 쓰면서 “점을 찍으면 기능이 나온다”는 감각을 먼저 잡으세요. 그다음 본인 업무에서 반복되는 데이터 구조(거래처, 발주서, 직원 명단 등)가 눈에 보이면, 그 구조를 class로 한번 직접 정의해보는 식으로 넘어가는 것을 권합니다.
이 순서를 거꾸로 하면, 즉 문법책 순서대로 클래스부터 암기식으로 배우면 실무에 적용할 타이밍을 놓치기 쉽습니다. 비전공자 파이썬 데이터 분석 배우는 순서에서도 강조했듯, 학습은 항상 “지금 내 업무의 어떤 반복을 줄일 것인가”에서 출발해야 오래갑니다.
픽셀앤코드에서는 사무직 실무자를 대상으로 엑셀 자동화부터 시작해 함수, 클래스까지 실제 업무 데이터를 예제로 활용하는 코딩 교육을 진행하고 있습니다. 어느 단계에서 클래스를 배우는 게 맞는지 판단이 어려우시다면, 현재 업무 자동화 수준을 먼저 진단해보는 상담부터 시작하실 수 있습니다.