[Python] 파이썬의 함수 def, 클래스 class 상속에 대하여

2025. 3. 17. 19:34Python 파이썬

반응형

1. 함수와 def 키워드

  • 함수란?
    • 반복되는 작업이나 특정 기능을 하나의 코드 블록으로 묶어 놓은 것입니다.
  • def 키워드
    • def를 사용해 함수를 정의합니다.
def greet(name):
    return f"안녕하세요, {name}님!"

print(greet("홍길동"))  # 출력: 안녕하세요, 홍길동님!

2. 클래스와 class 키워드

  • 클래스란?
    • 객체(인스턴스)를 만들기 위한 설계도입니다.
    • 클래스 안에는 변수(속성)와 함수(메서드)가 들어갑니다.
  • class 키워드
    • class를 사용해 클래스를 정의합니다.
class Person:
    def __init__(self, name, age):
        self.name = name  # 인스턴스 변수
        self.age = age

    def introduce(self):
        print(f"안녕하세요, 제 이름은 {self.name}이고, {self.age}살입니다.")

p = Person("홍길동", 30)
p.introduce()  # 출력: 안녕하세요, 제 이름은 홍길동이고, 30살입니다.

3. 생성자: init (그리고 new)

  • init 메서드
    • 객체가 생성된 후 호출되어 초기값(속성)을 설정합니다.
    • 예를 들어, 위의 Person 클래스에서 name과 age를 설정하는 역할을 합니다.
  • new 메서드
    • 객체를 실제로 생성하는 역할을 하며, 특별한 경우에만 직접 오버라이드합니다.

4. self

  • self란?
    • 클래스의 인스턴스 자신을 나타내는 변수입니다.
    • 메서드를 호출할 때 자동으로 인스턴스를 첫 번째 매개변수로 전달합니다.
  • 주의 사항
    • 관례상 self를 사용하지만, 다른 이름을 사용해도 작동합니다.
    • 단, 대부분의 파이썬 코드에서는 self를 사용합니다.

5. 클래스 상속(Inheritance)

  • 상속이란?
    • 한 클래스(자식 클래스)가 다른 클래스(부모 클래스)의 속성과 메서드를 물려받는 것입니다.
  • 사용 방법
    • 클래스 선언 시 괄호 안에 부모 클래스 이름을 적습니다.
class Animal:
    def sound(self):
        print("동물이 소리를 냅니다.")

class Dog(Animal):
    def sound(self):  # 부모의 sound 메서드를 재정의(오버라이딩)
        print("멍멍!")

dog = Dog()
dog.sound()  # 출력: 멍멍!
  • 다중 상속도 가능
    • 여러 부모 클래스로부터 동시에 상속받을 수 있습니다.

6. name 변수

  • __name__의 역할
    • 모듈(파이썬 파일)의 이름을 나타내며, 코드가 직접 실행되었는지 혹은 임포트되었는지를 구분합니다.
if __name__ == "__main__":
    # 이 코드는 파일이 직접 실행될 때만 실행.
    print("직접 실행되었습니다!")

7. 파이썬 객체 구조

  • 파이썬에서는 숫자, 문자열, 리스트, 함수, 클래스 등 모든 것이 객체입니다.
  • 객체의 구성 요소
    • class: 객체가 어떤 클래스의 인스턴스인지 나타냅니다.예: print(10.__class__) # <class 'int'>
    • dict: 객체가 가진 속성들이 저장된 딕셔너리입니다.
    • slots: 객체가 가질 수 있는 속성을 제한해 메모리 사용을 줄일 수 있습니다.
  • 메서드 바인딩
  • 클래스 내부의 함수는 호출 시 자동으로 인스턴스(self)와 연결됩니다.
반응형