티스토리 뷰
목차
파이썬은 객체지향 프로그래밍을 지원하는 언어입니다. 그래서 클래스를 정의하여 사용할 수 있습니다. 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
파이썬 배열 역순(거꾸로) 출력