본문 바로가기

카테고리 없음

프렌드: Python에서 함수와 클래스를 사용하는 방법을 총 정리하여 안내합니다!

1. 함수

함수는 특정 작업을 수행하기 위해 일련의 코드를 묶는 도구입니다. 이를 통해 코드의 재사용성과 가독성을 높일 수 있습니다. 파이썬에서 함수를 정의하는 방법은 다음과 같습니다.

def 함수명(매개변수1, 매개변수2, ...):
    # 함수 내용
    return 결과값

함수를 정의하기 위해서는 def 키워드를 사용하고, 함수명을 지정한 후에 괄호 안에 매개변수를 정의합니다. 매개변수는 함수 내에서 사용되는 입력값으로, 필요에 따라 생략될 수 있습니다. 함수 내용은 콜론(:) 다음 줄부터 작성되며, 들여쓰기로 코드 블록을 구분합니다. 함수가 어떤 값을 반환하려면 return 키워드를 사용하여 결과값을 지정합니다.

함수를 호출하기 위해서는 함수명과 함께 괄호 안에 필요한 인자를 전달합니다. 인자는 함수에게 입력값을 제공하는 역할을 합니다. 예를 들어, 다음은 두 정수를 더하는 함수의 예시입니다.

def add_numbers(x, y):
    result = x + y
    return result

print(add_numbers(3, 5))  # 출력: 8

위 예시에서 add_numbers 함수는 두 개의 정수를 입력받아 더한 뒤 그 결과를 반환합니다. print(add_numbers(3, 5))를 통해 함수를 호출하고 그 결과를 출력하면 8이라는 값이 나오게 됩니다.

2. 클래스

클래스는 객체 지향 프로그래밍에서 객체를 생성하기 위한 설계도입니다. 객체는 특정한 상태와 행위를 가지는 개체를 의미하며, 클래스는 이러한 객체를 생성하기 위한 속성과 메서드를 정의합니다. 파이썬에서 클래스를 정의하는 방법은 다음과 같습니다.

class 클래스명:
    def __init__(self, 속성1, 속성2, ...):
        # 초기화 코드
    def 메서드1(self, 매개변수1, 매개변수2, ...):
        # 메서드1 코드
    def 메서드2(self, 매개변수1, 매개변수2, ...):
        # 메서드2 코드

클래스는 class 키워드로 시작하며, 클래스명을 지정한 후 콜론(:)을 사용하여 클래스의 내용을 정의합니다. 클래스 내에는 초기화 메서드(__init__)와 다양한 메서드를 포함할 수 있습니다.

초기화 메서드는 클래스가 인스턴스화될 때 호출되는 특별한 메서드입니다. 이 메서드의 첫 번째 매개변수는 self로 지정해야 하며, 이를 통해 인스턴스에 접근할 수 있습니다. 초기화 메서드는 인스턴스 변수를 설정하거나 초기화하는데 사용됩니다.

메서드는 클래스가 가지는 동작이나 기능을 정의하는 함수입니다. 메서드는 self 매개변수를 반드시 가져야 하며, 이를 통해 메서드가 해당 인스턴스에 접근할 수 있습니다.

예를 들어, 다음은 사각형을 나타내는 클래스의 예시입니다.

class Rectangle:
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def get_area(self):
        return self.width * self.height

rect = Rectangle(5, 3)
print(rect.get_area())  # 출력: 15

위 예시에서 Rectangle 클래스는 사각형의 너비(width)와 높이(height)라는 두 개의 속성을 가지고 있습니다. 초기화 메서드를 통해 속성을 초기화하고, get_area 메서드를 사용하여 사각형의 넓이를 계산하고 반환합니다. rect 인스턴스를 생성하여 get_area 메서드를 호출하면, 사각형의 넓이인 15가 출력됩니다.

3. 활용법

클래스는 객체 지향 프로그래밍에서 많이 사용되며, 다양한 방식으로 활용할 수 있습니다. 클래스를 활용하는 몇 가지 예시를 살펴보겠습니다.

상속

클래스는 다른 클래스로부터 상속을 받을 수 있습니다. 상속을 통해 부모 클래스의 속성과 메서드를 자식 클래스에서 사용할 수 있습니다. 이를 통해 코드의 재사용성을 높이고, 자식 클래스에서 부모 클래스의 기능을 확장하거나 변경할 수 있습니다.

class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        raise NotImplementedError

class Dog(Animal):
    def speak(self):
        return "멍멍!"

class Cat(Animal):
    def speak(self):
        return "야옹!"

dog = Dog("뽀삐")
print(dog.name)       # 출력: 뽀삐
print(dog.speak())    # 출력: 멍멍!

cat = Cat("야옹이")
print(cat.name)       # 출력: 야옹이
print(cat.speak())    # 출력: 야옹!

위 예시에서 Animal 클래스는 동물을 나타내는 범용 클래스입니다. Dog 클래스와 Cat 클래스는 Animal 클래스를 상속받고, speak 메서드를 오버라이딩하여 각각 "멍멍!"과 "야옹!"을 반환하도록 구현하였습니다. dog 인스턴스와 cat 인스턴스를 생성하고, 각각의 속성과 speak 메서드를 호출하면 예상된 결과가 출력됩니다.

다형성

클래스의 다형성을 통해 동일한 인터페이스를 가진 다양한 클래스 객체를 사용할 수 있습니다. 이는 코드의 유연성을 높이고, 객체의 타입과 관계없이 동일한 작업을 수행할 수 있습니다.

class Shape:
    def get_area(self):
        raise NotImplementedError

class Circle(Shape):
    def __init__(self, radius):
        self.radius = radius

    def get_area(self):
        return 3.14 * (self.radius ** 2)

class Rectangle(Shape):
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def get_area(self):
        return self.width * self.height

shapes = [Circle(5), Rectangle(2, 3)]

for shape in shapes:
    print(shape.get_area())

위 예시에서 Shape 클래스는 도형을 나타내는 범용 클래스입니다. Circle 클래스와 Rectangle 클래스는 Shape 클래스를 상속받고, 각자의 get_area 메서드를 오버라이딩하여 해당 도형의 면적을 반환하도록 구현했습니다. shapesCircleRectangle 인스턴스들로 이루어진 리스트입니다. shapes의 각 요소에 대해 반복문을 실행하여 get_area 메서드를 호출하면, 각 도형의 면적이 출력됩니다.

모듈 구성

클래스는 모듈을 구성하는 요소로 사용될 수 있습니다. 모듈은 관련된 변수, 함수, 클래스를 함께 묶은 것으로, 코드를 구조화하고 재사용성을 높이는데 유용합니다. 여러 개의 클래스를 하나의 모듈에 포함시켜 관련 기능들을 쉽게 접근할 수 있습니다.

# shapes.py

class Shape:
    def get_area(self):
        raise NotImplementedError

class Circle(Shape):
    def __init__(self, radius):
        self.radius = radius

    def get_area(self):
        return 3.14 * (self.radius ** 2)

class Rectangle(Shape):
    def __init__(self, width, height):
        self.width = width
        self.height = height

    def get_area(self):
        return self.width * self.height

위 예시에서 shapes.py는 도형 관련 클래스를 정의한 모듈입니다. 이 모듈을 다른 파이썬 파일에서 import 키워드를 사용하여 가져와 사용할 수 있습니다. 예를 들어, main.py라는 파일에서 shapes.py 모듈을 가져와 사용할 수 있습니다.

# main.py

from shapes import Circle, Rectangle

circle = Circle(5)
print(circle.get_area())

rectangle = Rectangle(2, 3)
print(rectangle.get_area())

위의 main.py 예시에서 shapes 모듈에서 CircleRectangle 클래스를 가져와 사용하고 있습니다. circle 인스턴스와 rectangle 인스턴스를 생성하고, 각각의 get_area 메서드를 호출하여 도형의 면적을 출력합니다.