본문 바로가기
판다스/기초 파이썬

[python] 7.2. 클래스 - 속성과 메서드

by 김판다t 2024. 11. 15.

데이터 분석 입문을 위한 기초적인 파이썬 내용을 다룹니다. 데이터 분석은 주로 파이썬의 라이브러리인 판다스를 활용해 이루어지며, 이를 위해 기본적인 파이썬 개념에 대한 이해가 필요합니다. 하지만 이것은 파이썬을 완벽하게 숙달해야 한다는 의미는 아닙니다. 그렇기에 판다스와 데이터 분석에 입문할 수 있도록 핵심 파이썬 개념을 간략하게 제공할 것입니다.

 

 

7.2. 속성과 메서드

속성과 메서드

속성과 메서드는 클래스의 기본 구성 요소로, 객체의 상태(속성)와 동작(메서드)를 정의합니다. 속성은 클래스 내부에서 정의된 변수로, 객체의 고유 데이터를 저장합니다. 메서드는 클래스 내부에서 정의된 함수로, 객체가 수행할 동작을 구현합니다. 객체의 속성이나 메서드를 호출할 때는 객체 이름 뒤에 점(.)을 붙여 사용합니다.

 

속성과 메서드의 예시

 

이 예시는 MyWaffle 클래스를 정의하고, 이를 통해 객체를 생성한 뒤, 객체의 속성을 문자열로 출력하는 info 메서드와 속성을 확인하거나 수정하는 방법을 설명합니다.

 

# MyWaffle 클래스의 정의
class MyWaffle:
    # 생성자: 와플의 크기와 내용물을 초기화
    def __init__(self, size, fill):
        self.size = size  # 와플의 크기 (예: 'small', 'medium', 'large')
        self.fill = fill  # 내용물 (예: '초코', '딸기')
    
    # 메서드 : 와플 종류를 알려주는 메서드
    def info(self): 
        return f'{self.size} 크기의 {self.fill} 와플'  # 예: 'small 크기의 초코 와플'
        

# MyWaffle 객체 생성
waffle1 = MyWaffle('small', '초코')  # 'small' 크기의 '초코' 와플 생성

# info 메서드의 사용
waffle1.info()  # 출력 결과: 'small 크기의 초코 와플'

# fill 속성 확인
waffle1.fill  # 출력 결과: '초코'

# fill 속성을 딸기로 수정
waffle1.fill = '딸기'

# info 메서드로 변경된 내용물 확인
waffle1.info()  # 출력 결과: 'small 크기의 딸기 와플'

 

1. 메서드

메서드는 클래스 내부에서 정의된 함수로, 객체가 수행할 동작을 정의합니다. 메서드는 함수의 일종으로, 클래스 내부에서 def 키워드를 사용해 정의하며, 매개변수를 통해 인수를 전달받을 수도 있습니다. 예시의 info 메서드는 객체의 속성인 크기와 내용물을 문자열로 반환하는 메서드입니다.

 

# info 메서드 정의
    def info(self): 
        return f'{self.size} 크기의 {self.fill} 와플'

 

info 메서드를 객체 이름 뒤에 점(.)을 붙여 사용하면 크기와 내용물을 문자열로 반환합니다.

 

# info 메서드의 사용
waffle1.info()  # 출력 결과: 'small 크기의 초코 와플'

 

메서드는 클래스 내부에서 정의된 함수로, 객체가 수행할 동작을 정의하며 객체 뒤에 붙여 사용합니다.

 

2. 속성

속성은 객체가 생성될 때 정의되어, 객체의 상태나 특징을 나타내는 중요한 요소입니다. 속성은 생성자를 통해 초기화되며, 객체가 생성될 때 필요한 데이터를 입력받아 설정됩니다. 

 

    # 입력받을 속성들을 생성자로 지정
    def __init__(self, size, fill): # 생성자
        self.size = size  # 와플의 크기 (예: 'small', 'medium', 'large')
        self.fill = fill  # 내용물 (예: '초코', '딸기')
        
        
 # 객체를 생성할 때 속성들을 입력
 waffle1 = MyWaffle('small', '초코')  # 'small' 크기의 '초코' 와플 생성

 

생성된 속성은 객체를 통해 직접 확인할 수 있어, 객체의 현재 상태를 명확히 파악할 수 있습니다. 예를 들어, waffle1 객체의 fill 속성을 확인하려면 다음과 같이 코드를 작성합니다.

 

# waffle1 객체에서 내용물을 나타내는 fill 속성 확인
waffle1.fill # 출력 결과: '초코'
 
 

속성은 객체가 생성된 이후에도 수정할 수 있습니다. 이는 객체가 동적으로 상태를 변경할 수 있음을 보여줍니다. 객체의 속성을 확인한 뒤, 새로운 값을 할당하면 해당 속성이 업데이트됩니다. 다음은 waffle1 객체의 fill 속성을 수정하는 예제입니다.

 

# 속성의 수정
waffle1.fill = '딸기' # 내용물을 '딸기'로 수정
 
 

속성을 수정한 후에는 변경된 상태를 확인할 수 있습니다. 다시 속성을 적용해도 확인이 가능하며, 예를 들어 이전에 정의한 info 메서드를 호출하여 변경 내용을 출력할 수 있습니다.

 

# 수정된 속성 확인
waffle1.fill # # 출력 결과: '딸기'
waffle1.info() # 출력 결과: 'small 크기의 딸기 와플'
 

 

이렇듯 속성은 객체와 함께 생성되며, 객체의 데이터를 저장해 상태를 나타냅니다. 또한 필요에 따라 수정할 수 있어 객체의 동적인 변화를 지원합니다.  

 

속성과 메서드를 간단히 이해하기

 

속성과 메서드의 개념을 어려워하는 입문자들이 많습니다. 그러나 걱정할 필요는 없습니다. 앞서 언급했듯이, 실제로 데이터 분석 입문자들이 클래스를 생성할 일은 거의 없기 때문에, 생성법보다는 라이브러리의 속성과 메서드를 사용하기 위해 구분해 기억하는 것이 중요합니다.

 

입문자는 메서드를 간단히 '객체 뒤에 붙여 쓰는 함수'라고 생각해도 좋습니다. 예를 들어, 리스트의 원소를 추가하는 append가 대표적인 메서드입니다. 메서드는 해당 객체에 종속되기 때문에, len 함수는 문자열과 리스트 모두에 사용할 수 있지만 append 메서드는 리스트에서만 사용할 수 있습니다.

 

속성은 '메서드인데 소괄호를 쓰지 않는 메서드'라고 이해하면 됩니다. 물론 엄밀히 정의하면 속성은 클래스 내부에 정의된 변수로, 소괄호가 없으므로 인수를 입력받지 못하고, 값이 수정 가능한 변수라는 점에서 함수와 다릅니다. 하지만 클래스 내부에 정의된 변수라는 개념을 이해하기 어려운 입문자에게는 이렇게 이해하는 것이 속성이라는 용어를 받아들이기 더 쉬울 수 있습니다.


 

유튜브에서 판다스 강의 중입니다.

https://www.youtube.com/@KimPandas