본문 바로가기
카테고리 없음

클래스(Class) 사용법 & 예제 총정리

by kangs' tong 2023. 9. 30.

클래스(Class) 사용법 & 예제 총정리

클래스란?

클래스는 객체를 생성하기 위한 일종의 틀(template)이며, 객체의 속성(attribute)과 동작(method)을 정의하는데 사용됩니다. 이를테면, 클래스는 '고양이'라는 객체를 생성하기 위한 틀이라고 생각할 수 있습니다. 클래스를 정의하는 방법은 다음과 같습니다.

class Cat:
    # 클래스 속성
    species = "고양이"

    # 생성자 메소드
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # 동작 메소드
    def meow(self):
        print("야옹~")

클래스의 구성 요소

클래스는 다음과 같이 속성과 메소드로 구성됩니다.

속성(Attribute)

클래스의 속성은 객체의 상태를 나타내며, 해당 클래스로 생성된 모든 객체가 공유합니다. 위 예제에서 species는 클래스 속성으로, 모든 Cat 객체가 공통으로 갖게 됩니다.

메소드(Method)

클래스의 메소드는 객체의 동작을 정의합니다. 위 예제에서 __init__는 생성자 메소드로, 객체가 생성될 때 자동으로 호출되며 초기화 작업을 수행합니다. meow는 동작 메소드로, 해당 객체가 '야옹~'이라는 소리를 낼 수 있도록 정의되어 있습니다.

클래스의 사용법

클래스는 다음과 같이 인스턴스화하여 사용할 수 있습니다.

# Cat 클래스의 인스턴스 생성
my_cat = Cat("야옹이", 3)

# 객체의 속성에 접근
print(my_cat.name)  # 출력: 야옹이
print(my_cat.age)  # 출력: 3

# 객체의 메소드 호출
my_cat.meow()  # 출력: 야옹~

위 예제에서는 Cat 클래스의 인스턴스 my_cat을 생성하고, 해당 인스턴스의 속성과 메소드를 호출해보았습니다.

클래스 예제: 계산기 클래스

다음은 계산기 기능을 수행하는 클래스인 Calculator 예제입니다.

class Calculator:
    def __init__(self):
        self.result = 0

    def add(self, num):
        self.result += num

    def subtract(self, num):
        self.result -= num

    def multiply(self, num):
        self.result *= num

    def divide(self, num):
        if num != 0:
            self.result /= num
        else:
            print("0으로 나눌 수 없습니다.")

    def reset(self):
        self.result = 0

위 예제에서는 Calculator 클래스를 정의하고, 덧셈, 뺄셈, 곱셈, 나눗셈, 초기화 기능을 정의하였습니다.

# Calculator 클래스의 인스턴스 생성
my_calculator = Calculator()

# 계산 수행
my_calculator.add(5)
my_calculator.subtract(3)
my_calculator.multiply(4)
my_calculator.divide(2)

# 결과 출력
print(my_calculator.result)  # 출력: 8

# 초기화
my_calculator.reset()
print(my_calculator.result)  # 출력: 0

전체 내용 정리

클래스는 객체를 생성하기 위한 틀로, 속성과 메소드로 구성됩니다. 클래스의 속성은 객체의 상태를, 메소드는 객체의 동작을 정의하며, 해당 클래스를 인스턴스화하여 사용할 수 있습니다. 클래스는 실제로 사용 가능한 기능을 가진 다양한 객체를 생성하는 데 사용됩니다. 예를 들어, Cat 클래스는 고양이 객체를 생성하고, Calculator 클래스는 계산기 객체를 생성합니다.

댓글