PYTHON - 클래스 고급(Chapter 8-44. 생성자와 메소드)

2025. 3. 17. 11:35·Python

 

📚 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

✅ 이해도 체크리스트

  1. 생성자 함수란 무엇인가요?
    • ✅ 클래스의 인스턴스를 초기화하는 메서드입니다.
  2. 생성자 함수는 어떻게 정의되나요?
    • ✅ def __init__(self, 추가적인 매개변수):
  3. 올바른 생성자 함수 호출 예제는 무엇인가요?
    • ✅ student = CreateOzStudent("홍해인", 4, 5, 2, 4)
  4. self는 무엇을 가리키나요?
    • ✅ 인스턴스 객체 자신을 가리킵니다.
  5. 왜 클래스의 메서드 첫 번째 매개변수로 self를 사용하나요?
    • ✅ 메서드가 호출된 인스턴스 객체를 참조하기 때문입니다.
  6. 다음 코드에서 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__을 제대로 이해하면 객체지향 프로그래밍의 기초가 탄탄해집니다. 실전에서 객체를 다룰 때 훨씬 더 효율적으로 작업할 수 있어요!

'Python' 카테고리의 다른 글

PYTHON - 클래스 고급 (Chapter 8-45. 클래스 변수와 메소드)  (0) 2025.03.17
PYTHON - 클래스 고급 (Chapter 8-45. 인스턴스와 특수 메소드)  (0) 2025.03.17
PYTHON - 클래스 고급 (Chapter 8-43. 객체와 클래스 선언하기)  (0) 2025.03.17
PYTHON - 특강노트 (2025-03-14)  (0) 2025.03.14
PYTHON - 예외처리와 모듈 (Chapter 7-41. 패키지)  (0) 2025.03.14
'Python' 카테고리의 다른 글
  • PYTHON - 클래스 고급 (Chapter 8-45. 클래스 변수와 메소드)
  • PYTHON - 클래스 고급 (Chapter 8-45. 인스턴스와 특수 메소드)
  • PYTHON - 클래스 고급 (Chapter 8-43. 객체와 클래스 선언하기)
  • PYTHON - 특강노트 (2025-03-14)
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (657) N
      • Python (32)
      • 프로젝트 (43)
      • 과제 (25)
      • Database (40)
      • 멘토링 (11) N
      • 특강 (34) N
      • 기술블로그 (36) N
      • 기술블로그-Fastapi편 (20) N
      • 기술블로그-Django편 (152) N
      • 기술블로그-Flask편 (35)
      • AI 분석 (4)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (72)
      • Fastapi (1) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
PYTHON - 클래스 고급(Chapter 8-44. 생성자와 메소드)
상단으로

티스토리툴바