본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
멤버 변수
- 객체가 가지는속성(Attribute) 또는값(Value,Data)
- 멤버 변수로의 접근 : Obj.variable
- 인스턴스 내부에서 접근할 때에는, self.variable
멤버 변수의 초기화 : 생성자
- 생성자를 통한 초기화
- 생성 시 넘겨받은 파라밑어를 활용하여 초기화
ex) self.name = name
| 멤버변수 | 지역변수 |
| - 객체에 속함 - self.variable - 객체가 살아있는 동안 유지 |
- 메소드 내부에서만 사용 - 메소드 종료시 사라짐 |
생성자(Constructor)
- 클래스를 통해 인스턴스를 생성할 때, 반드시 실행되는 메소드
- __init__() 이라는이름으로 예약되어 있음
- 생성자의 첫 번째 매개변수는 항상 'self'
- self는 생성자에 의해 초기화 된 인스턴스를 의미
- 클래스의 다른 메소드에서 인스턴스 변수 및 속성에 접근할 때 사용
생성자 사용하기
- 생성자는 객체를 사용하는 시점에 자동으로 호출됨.
- 객체 바깥에서 초기화되지 않은 멤버 변수에 대한 접근을 시도할 경우 Attribute Error 발생.
→ Attribute Error는 단순 에러가 아닌, '이 객체는 그런 책임/속성을 가지지 않는다'는 명확한 신호를 의미함
class Person:
def hello(self):
print("Hello! I'm " + self.name)
def __init__(self, name, age): #__init__ : 생성자 메소드
self.name = name
self.age = age
man = Person("Robert", 30)
man.hello() #Hello! I'm Robert
print(f"{man.name}: {man.age}세") #Robert : 30세
print(f"{man.job}") #Attribute Error : 정의되지 않은 속성
메소드(Method)
- 클래스의 객체(인스턴스)에 대해 수행하는 동작을 정의하는 함수
- 클래스 내에 함수 형태로 정의됨
- 첫 번째 매개변수는 반드시 'self'
- self를 이용하여 객체의 속성 및 다른 메소드에 접근 가능
메소드 활용하기
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def hello(self):
print("Hello! I'm " + self.name)
def update_age(self, new_age):
if new_age > 0:
self.age = new_age
print(f"I'm {self.age} years old now!")
else:
raise ValueError("나이는 0살보다 어릴 수 없습니다.")
객체와 멤버 변수의 생명주기
- 객체가 초기화될 때, 객체와 멤버 변수가 생성됨
- 멤버 변수는 객체가 존재하는 동안 메모리에 상주
- 객체는 더 이상 필요하지 않거나, 삭제하는 경우 파괴됨
- 일반 변수와 동일한 유효 범위(Scope)를 가짐 - 멤버 변수는 객체가 파괴되면 함께 파괴됨
객체지향 프로그래밍을 배우다보면, 가장 많이 등장하는 단어가 바로 '클래스', '객체', '멤버 변수' 예요. 처음에는 각각 따로 이해되는 개념처럼 보이지만, 실제로는 이 세 가지가 유기적으로 맞물려 하나의 구조를 이루죠. 오늘은 이 개념들이 서로 어떤 상호작용을 하고, 왜 중요한지 정리해볼게요.
먼저 클래스(Class)는 객체를 만들기 위한 설계도예요. 어떤 속성을 가지고, 어떤 기능을 수행할 수 있는지를 정의한 개념의 틀이라고 볼 수 있죠. 클래스 자체는 아직 실체가 없는 상태이며, 단지 어떤 형태의 객체를 만들겠다는 약속에 가깝죠. 즉, 클래스는 가능성의 집합이라고 할 수 있어요.
이 클래스라는 설계도를 기반으로 실제로 생성된 것이 객체(Object), 또는 인스턴스죠. 객체는 클래스에서 정의된 구조를 그대로 따르되, 각자 고유한 상태를 가져요. 같은 클래스로부터 여러 객체를 만들 수 있지만, 각각은 서로 다른 값을 가질 수 있고 독립적으로 동작하죠. 이 지점에서 객체는 단순한 코드 덩어리가 아니라, 프로그램 안에서 하나의 실체로 존재하게 되는 겁니다.
객체의 상태를 구체적으로 표현하는 것이 바로 멤버변수! 멤버 변수는 객체가 가지고 있는 속성으로, 객체가 지금 어떤 상태인지를 나타내요. 예를 들어 사람 객체라면 이름, 나이 같은 정보가 멤버 변수가 되죠. 이 멤버 변수들은 클래스에서 정의된 틀을 따르지만, 실제 값은 객체마다 다르게 설정됩니다. 즉, 클래스는 구조를 정의하고, 객체는 그 구조에 값을 채우며, 멤버 변수는 객체의 상태를 완성하는거죠. 이 세 가지의 상호작용에서 중요한 점은 역할의 분리에요. 클래스는 '무엇을 가질 수 있는가'를 정의하고, 객체는 '지금 무엇을 가지고 있는가'를 표현하죠. 멤버 변수는 그 사이에서 객체의 현재 상태를 저장하는 역할을 맡아요. 이 구조 덕분에 한 객체의 상태 변화가 다른 객체에 영향을 주지 않으면서도, 공통된 행동은 클래스 단위에서 일관되게 관리할 수 있답니다.
이 개념들이 중요한 이유는, 프로그램이 커질수록 상태 관리와 책임 분리가 핵심 문제가 되기 때문이에요. 객체지향 프로그래밍에서는 데이터를 아무 곳에서나 수정하지 않고, 해당 데이터를 소유한 객체를 통해서만 변경하도록 설계하기 때문에, 코드의 안정성을 높이고 버그를 줄이면서 유지보수를 훨씬 수월하게 만들 수 있어요. 앞으로 더 복잡한 시스템을 다루게 되더라도, 이 기본 구조를 기준으로 생각하면 코드를 새로 짜거나 코드를 보고 해석할 때 방향을 잃지 않을 수 있을 것 같아요!!




커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스
성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.
fastcampus.co.kr
'RAG' 카테고리의 다른 글
| 패스트캠퍼스 환급챌린지 50일차 : 테디노트의 RAG 비법노트 강의 후기 (0) | 2025.12.31 |
|---|---|
| 패스트캠퍼스 환급챌린지 49일차 : 테디노트의 RAG 비법노트 강의 후기 (0) | 2025.12.30 |
| 패스트캠퍼스 환급챌린지 47일차 : 테디노트의 RAG 비법노트 강의 후기 (0) | 2025.12.28 |
| 패스트캠퍼스 환급챌린지 46일차 : 테디노트의 RAG 비법노트 강의 후기 (0) | 2025.12.27 |
| 패스트캠퍼스 환급챌린지 45일차 : 테디노트의 RAG 비법노트 강의 후기 (0) | 2025.12.26 |