클래스는 객체 지향 프로그래밍에서 객체를 생성하기 위한 템플릿으로 사용됩니다. Python 에서 클래스를 정의할 때는 class 키워드를 사용하며, 클래스 이름은 일반적으로 각 단어의 첫 글자를 대문자로 작성하는 PascalCase 규칙을 따릅니다.
class Developer:
def __init__(self, nickname, experience_years):
self.nickname = nickname
self.experience_years = experience_years
위 코드에서 __init__ 은 특수 메서드로, 생성자 (constructor) 역할을 합니다. 이 메서드는 클래스를 통해 인스턴스 (객체) 가 생성될 때 자동으로 실행되며, 새로 만들어진 객체의 초기 속성 값을 설정하는 데 사용됩니다.
생성자 내부의 self.nickname = nickname 과 같은 문장은 외부에서 전달받은 값을 현재 객체의 속성에 저장합니다. 여기서 self 는 메서드가 호출된 대상인 인스턴스 자체를 참조합니다. 클래스 내부 메서드의 첫 번째 인자는 반드시 self 로 정의되어야 하며, 이는 일반 함수와의 주요한 차이점입니다.
인스턴스를 생성하는 과정은 다음과 같습니다.
dev1 = Developer('Alice', 5)
이 구문은 Developer 클래스의 새로운 객체를 생성하고, __init__ 메서드를 호출하여 속성을 초기화합니다. 'Alice' 는 nickname 에, 5 는 experience_years 에 할당됩니다. 생성된 객체는 변수 dev1 에 저장됩니다. self 인자는 호출 시 자동으로 전달되므로 사용자는 인스턴스 데이터만 명시적으로 전달하면 됩니다.
객체의 속성에 접근하려면 점 (.) 연산자를 사용합니다.
print(dev1.nickname)
print(dev1.experience_years)
클래스 내부에 인스턴스 메서드를 정의하여 객체의 상태를 기반으로 동작하게 할 수 있습니다.
class Developer:
def __init__(self, nickname, experience_years):
self.nickname = nickname
self.experience_years = experience_years
def introduce(self):
print(f"안녕하세요, {self.nickname} 입니다. 경력은 {self.experience_years} 년입니다.")
클래스 내부에서 속성이나 다른 메서드에 접근할 때는 반드시 self 를 통해 참조해야 합니다. self 는 클래스 외부에서 생성된 구체적인 객체가 내부에서 표현된 형태입니다.
dev1 = Developer('Alice', 5)
dev1.introduce()
dev1.introduce() 를 호출하면 introduce 메서드의 self 는 dev1 객체를 가리키게 됩니다. 만약 dev2 라는 다른 인스턴스를 생성하여 동일한 메서드를 호출하면, self 는 dev2 를 참조하여 해당 객체의 고유한 데이터로 동작합니다.