Python
PYTHON - 클래스 고급(Chapter 8-44. 생성자와 메소드)
Chansman
2025. 3. 17. 11:35
📚 Chapter 8-44. 생성자와 메소드
1️⃣ 생성자 함수
class CreateOzStudent:
pass
student = CreateOzStudent()
oz_students = [
CreateOzStudent("백현우", 4, 3, 3, 2),
CreateOzStudent("홍해인", 4, 5, 2, 4),
CreateOzStudent("윤은성", 3, 4, 4, 1),
CreateOzStudent("홍수철", 2, 3, 1, 5)
]
- 생성자 함수는 객체를 만들 때, 기본 속성이나 필요한 처리를 적용할 수 있습니다.
- 이를 위해 __init__ 메소드를 사용합니다.
class 클래스이름:
def __init__(self, 매개변수):
self.속성 = 매개변수
⚠️ 주의: self는 클래스의 인스턴스 자신을 가리킵니다. 이는 클래스 내부에서 인스턴스 변수와 메서드에 접근할 때 사용됩니다.
2️⃣ Self 이해하기
- self: 클래스 인스턴스를 참조하는 변수로, 메소드 내에서 사용됩니다.
class MyClass:
def __init__(self, value):
self.value = value
def print_value(self):
print(self.value)
obj = MyClass(10)
obj.print_value() # 출력: 10
- self에 값이 어떻게 채워질까요?
- 클래스 메서드가 호출될 때, 파이썬은 자동으로 첫 번째 인자로 인스턴스 객체를 전달합니다.
class MyClass:
def print_self(self):
print(self)
obj = MyClass()
obj.print_self() # self는 obj를 참조합니다.
✅ self는 메모리에서 객체 자신을 참조합니다.
3️⃣ 생성자의 활용
class CreateOzStudents:
def __init__(self, name, python, database, django, AWS):
self.name = name
self.python = python
self.database = database
self.Django = django
self.AWS = AWS
oz_students = [
CreateOzStudents("백현우", 4, 3, 3, 2),
CreateOzStudents("홍해인", 4, 5, 2, 4),
CreateOzStudents("윤은성", 3, 4, 4, 1),
CreateOzStudents("홍수철", 2, 3, 1, 5)
]
print(oz_students[0].name) # 백현우
print(oz_students[0].python) # 4
🧠 Tip: self는 클래스의 인스턴스 속성에 접근할 때 필수입니다!
4️⃣ 생성자와 메서드의 활용
class CreateOzStudents:
def __init__(self, name, python, database, django, AWS):
self.name = name
self.python = python
self.database = database
self.Django = django
self.AWS = AWS
def get_sum(self):
return self.python + self.database + self.Django + self.AWS
def get_average(self):
return self.get_sum() / 4
def to_string(self):
return f'{self.name}\t{self.get_sum()}\t{self.get_average()}'
oz_students = [
CreateOzStudents("백현우", 4, 3, 3, 2),
CreateOzStudents("홍해인", 4, 5, 2, 4),
CreateOzStudents("윤은성", 3, 4, 4, 1),
CreateOzStudents("홍수철", 2, 3, 1, 5)
]
print("이름", "총점", "평균", sep="\t")
for student in oz_students:
print(student.to_string())
📋 출력 결과
이름 총점 평균
백현우 12 3.0
홍해인 15 3.75
윤은성 12 3.0
홍수철 11 2.75
✅ 이해도 체크리스트
- 생성자 함수란 무엇인가요?
- ✅ 클래스의 인스턴스를 초기화하는 메서드입니다.
- 생성자 함수는 어떻게 정의되나요?
- ✅ def __init__(self, 추가적인 매개변수):
- 올바른 생성자 함수 호출 예제는 무엇인가요?
- ✅ student = CreateOzStudent("홍해인", 4, 5, 2, 4)
- self는 무엇을 가리키나요?
- ✅ 인스턴스 객체 자신을 가리킵니다.
- 왜 클래스의 메서드 첫 번째 매개변수로 self를 사용하나요?
- ✅ 메서드가 호출된 인스턴스 객체를 참조하기 때문입니다.
- 다음 코드에서 self는 무엇을 참조하나요?
class MyClass:
def __init__(self, value):
self.value = value
def print_value(self):
print(self.value)
obj = MyClass(10)
obj.print_value()
- ✅ `obj` 객체
7. __init__ 함수의 역할은 무엇인가요? - ✅ 인스턴스를 초기화하고 초기 속성을 설정합니다.
🚀 Tip! self와 __init__을 제대로 이해하면 객체지향 프로그래밍의 기초가 탄탄해집니다. 실전에서 객체를 다룰 때 훨씬 더 효율적으로 작업할 수 있어요!