본문 바로가기
파이썬

파이썬 클래스 정의하기

by python pro 2023. 1. 26.
반응형

 

Python에서 클래스는 사용자 정의 데이터 타입을 정의할 때 사용됩니다. 클래스는 객체(object)를 생성하기 위한 틀(template)이며, 객체는 클래스로부터 생성됩니다.

 

클래스를 정의하는 것은 간단합니다. class 키워드를 사용하여 클래스 이름을 정의하고, 괄호 안에는 상속할 클래스를 작성합니다. 괄호가 비어 있는 경우는 기본 클래스인 object를 상속합니다.

 

class MyClass:
    pass

위 코드는 MyClass 클래스를 정의하는 것입니다. 하지만 이 클래스는 아무런 기능도 가지고 있지 않습니다. pass 키워드는 아무런 코드도 실행하지 않을 때 사용됩니다.

 

이제 클래스에 함수와 변수를 추가해보겠습니다. 클래스에서 정의하는 함수는 메서드(method)라고 불립니다.

 

class MyClass:
    def __init__(self):
        self.x = 0
        
    def print_x(self):
        print(self.x)
        
    def set_x(self, value):
        self.x = value
 
 

__init__ 메서드는 생성자(constructor)라고 불리며, 클래스 객체를 생성할 때 호출됩니다. __init__ 메서드에서는 self.x = 0 으로 초기화 해주고 있습니다. self는 현재 객체를 의미합니다. print_x 메서드는 현재 객체의 x 값을 출력합니다. set_x 메서드는 현재 객체의 x 값을 설정합니다. 위 코드를 사용하면 다음과 같이 클래스를 인스턴스화 하고, 메서드를 호출 할 수 있습니다.

obj = MyClass()
obj.print_x() # 0
obj.set_x(10)
obj.print_x() # 10

 

위 코드는 정상적인 코드 예시입니다. 하지만 아래 코드는 잘못된 코드 예시입니다.

obj = MyClass
obj.print_x() # TypeError: print_x() missing 1 required positional argument: 'self'

위 코드는 클래스를 객체로 인스턴스화 하지 않았기 때문에 TypeError가 발생합니다. 클래스를 객체로 인스턴스화하려면 MyClass()를 사용해야 합니다.

 

이처럼 Python에서 클래스를 정의하는 것은 간단합니다. class 키워드를 사용하여 클래스를 정의하고, 필요한 메서드와 변수를 추가하면 됩니다. 그리고 클래스를 객체로 인스턴스화 하여 메서드를 호출하면 클래스가 가진 기능을 사용할 수 있습니다.

 

위에서 설명한 것 외에도 클래스에 여러가지 기능을 추가할 수 있으며, 상속과 오버라이딩, 정적 메서드와 클래스 메서드를 사용할 수 있습니다. 그러나 이러한 기능들은 이 글에서는 설명하지 않습니다.

 

아래에서 더 다양한 예시를 확인해보시죠.

class Employee:
    def __init__(self, name, salary):
        self.name = name
        self.salary = salary
        
    def raise_salary(self, percent):
        self.salary += (self.salary * percent / 100)
    
    def display_employee(self):
        print("Name: {}".format(self.name))
        print("Salary: {}".format(self.salary))

employee1 = Employee("John Smith", 50000)
employee2 = Employee("Jane Doe", 60000)

employee1.raise_salary(10)
employee2.raise_salary(15)

employee1.display_employee()
employee2.display_employee()

위 코드는 직원 정보를 관리하는 클래스 Employee를 정의하고 있습니다. 클래스에는 이름과 급여 정보를 가지는 __init__ 메서드, 급여를 인상하는 raise_salary 메서드, 객체의 정보를 출력하는 display_employee 메서드가 정의되어 있습니다.

 

이 클래스를 사용하면, "John Smith" 이름의 직원과 "Jane Doe" 이름의 직원 객체를 생성할 수 있으며, 각각의 급여를 인상시키고 정보를 출력할 수 있습니다.

반응형

댓글