파이썬 (Python)

클래스 (Class) 란?

daisy9 2022. 8. 15. 09:24

클래스는 새로운 이름 공간을 지원하는 단위, 안에 함수와 변수가 포함될 수 있다.

 

사실 파이썬의 모든 자료형은 모두 클래스이다.

ex. int, float

 

클래스 안에 함수를 정의할 수 있는데, 이를 '메소드'라고 한다. 즉, 메소드도 함수의 일종이지만 클래스 안에서 구현된 함수이다. 문법은 사용자 정의 함수를 정의하는 것과 동일하다. 다른 점이 있다면 메소드의 첫 번째 인수는 반드시 해당 클래스의 인스턴스 객체이어야 한다는 것이다. 관례로 우리는 self란 이름으로 첫 번째 인수로 선언한다.

class MyClass:
	def apple(self, v):
    		self.value = v
   	def get(self):
    		return self.value

더불어 파이썬에서 전역 변수와 지역 변수가 있는데, 이를 헷갈리지 않게 하기 위해 self.value 로 value 라는 변수를 지정해주었다.

 

클래스를 정의하는 것은 새로운 자료형을 하나 만드는 것이고, 인스턴스는 이 자료형의 객체를 생성하는 것이다.

클래스 안에 있는 메소드나 변수를 사용하기 위해서는 무조건 인스턴스를 만들고 '인스턴스.ㅇㅇ' 의 형식으로 불러와야 한다.

c = MyClass() #인스턴스 객체 만들기
c.set('egg') #c의 인스턴스 객체가 self로 전달되어 두 번째 인수부터 입력하면 됨

 

그러나 메소드를 실행할 때 인스턴스.메소드() 형식으로 호출하지 않는 방식이 있다.

바로 인스턴스를 생성할 때 동시에 메소드가 실행되도록 하는 것이다. 이를 생성자 메소드, initializer 라고 부른다.

생성자 함수: __init__

생성자는 인스턴스/객체가 생성될 때 변수에 초기값을 할당하거나, 제일 먼저 실행되어야 하는 명령문을 기술하기 위해 사용 되는 특수한 메소드이다.

class Food:
    def __init__(self, name, year):  # 생성자 함수 Generator
        self.name = name
        self.year = year
        
    def expiry_date(self):
        print('만기 연도는 ' + str(self.year))

food_1 = Food('Pizza', 2018)  # 인스턴스/객체를 만드는 동시에 생성자 함수가 실행됨!!
food_1.expiry_date()	# 만기 연도는 2018

 

 

반대로 소멸될 때 자동으로 호출되는 메서드를 소멸자(Destructor)라고 부른다. 소멸자는 인스턴스 객체에서 사용하고서 메모리에 제거될 때 자동으로 호출된다.

소멸자 함수: __del__

 

다음의 글을 참고하였다.

"클래스가 object 를 상속받는 경우" 

https://jh-bk.tistory.com/24

 

[Python] 클래스가 object를 상속받는 경우

Introduction 남의 파이썬 코드를 보다 보면, 종종 다음과 같은 형태의 클래스 선언과 마주하게 된다. class MyClass(object): # blah blah... 일단은 해당 라인만 보면 내가 선언한 클래스가 object 클래스를 상.

jh-bk.tistory.com

 

마지막으로 @property 와 getter, setter 에 대해 알아볼 것인데...