본문 바로가기
C++ 200제/코딩 IT 정보

파이썬 클래스 이해하기 - 생성자 소멸자 상속

by vicddory 2019. 7. 20.

파이썬은 객체지향 프로그래밍을 지원하는 언어입니다. 그래서 클래스를 정의하여 사용할 수 있습니다. Python의 클래스 정의 방법은 다른 언어와 비교했을 때 비교적 쉽습니다.


이 포스팅을 통해 파이썬의 기본 클래스 사용 방법을 이해하실 겁니다.



클래스 정의

파이썬에서는 클래스 정의에 class문을 사용합니다. class문을 사용하여 정의하는 방법은 다음과 같습니다.


1
class 클래스 이름 :
cs


class 문장 다음에 적힌 이름이 해당 클래스의 이름이 됩니다. 이름 뒤에는 ":"를 붙입니다. 그 후에 들여쓰기 등을 활용하여 클래스를 정의합니다.


1
2
3
4
class Test :
    pass #아무것도 하지 않는 클래스의 경우 pass 적음
 
test = Test() # 인스턴스 생성
cs

메소드

클래스 내부에 함수를 정의할 수 있습니다. 메소드 정의는 다음과 같습니다.


1
2
3
4
class 클래스 이름 :
 
    def 메소드 이름 (self) :
        # 메소드 정의
cs


함수는 반드시 하나 이상의 인자를 갖습니다. 또한, 첫 번째 인자를 self라고 적으며, 호출은 아래와 같이 합니다.


1
인스턴스.메소드명()
cs


1
2
3
4
5
6
7
class Test :
 
    def test_print (self) :
        print('This is test')
 
test = Test() # 인스턴스 생성
test.test_print() # 메서드 호출
cs


[실행 결과]


1
This is test
cs


생성자와 소멸자

파이썬 함수 중에서 객체가 생성될 때 자동으로 호출되는 메소드를 생성자라고 합니다. 생성자를 정의하려면 "init"라는 이름의 함수를 만듭니다.


1
2
3
class Test :
    def __init __ (self, 인수 1, 인수 2, ...) :
        # 생성자 정의
cs


init도 반드시 self라는 인수가 필요합니다. 이외에도 인자를 추가할 수 있으며, 그 인자는 인스턴스를 생성할 때 클래스 호출 시점에 전달됩니다.


1
2
3
4
5
6
7
8
9
class Test :
    def __init __ (self, num) :
        self.num = num; # 이 클래스가 가진 "num" 변수에 인자를 저장
 
    def print_num (self) :
        print('인자로 전달된 숫자는 {}입니다.'format(self.num)) 
 
test = Test (10# 여기에 전달된 인자가 __init__에서 num에 전달
test.print_num ()
cs


[실행 결과]


1
인자로 전달된 숫자는 10입니다. 
cs

생성자의 반대는 소멸자입니다. 인스턴스가 제거될 때 호출되며 "del" 키워드로 정의됩니다.


1
2
3
4
5
6
7
8
9
10
class Test :
    def __init __ (self) :
        print ( '생성자가 호출되었습니다')
 
    def __del __ (self) :
        print ( '소멸자가 호출되었습니다')
 
 
test = Test () # 인스턴스 생성
del test # 인스턴스 제거
cs


[실행 결과]


1
2
생성자가 호출되었습니다 
소멸자가 호출되었습니다
cs


상속

Python 클래스도 다른 클래스를 상속받거나 확장할 수 있습니다. 파이썬 클래스를 상속하는 경우 클래스 문에 부모가 되는 클래스를 지정합니다. 부모 클래스의 함수를 호출할 경우 super()를 사용합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Test :
    def __init __ (self, num) :
        self.num = num;
 
    def print_num (self) :
        print ( '인수로 전달된 숫자는 {}입니다.'format (self.num))
 
 
class Test2 (Test) : #Test 클래스를 상속
    def print_test2_info (self) :
        print ( '이 클래스는 Test 클래스를 상속합니다.')
        super () print_num () # 부모 클래스의 print_num () 호출
 
test = Test2 (10)
test.print_test2_info ()
cs


[실행 결과]

1
2
이 클래스는 Test 클래스를 상속합니다. 
인수로 전달된 숫자는 10입니다.
cs


관련 글

파이썬 gui, tkinter Class 활용한 입력창 버튼 예제

https://codingcoding.tistory.com/1045


파이썬 pillow(pil) 이미지 라이브러리 설치 방법

https://codingcoding.tistory.com/1046


정수 최대값 구하기 소스 2개

https://codingcoding.tistory.com/1022


파이썬 배열 역순(거꾸로) 출력

https://codingcoding.tistory.com/1024

댓글