<< 1주차 Lecture Note 4번째 >>
- Class
 - Module
 
Class
클래스는 인스턴스를 생성하는 생성자 역할을 한다.
1. Basic
class MyHome:
    
    # 인스턴스 생성 시점의 초기 설정값
    colorRoof = 'red'
    stateDoor = 'closed'
    
    # 인스턴스에서 사용하는 function(메서드)
    def paintRoof(self, color):
        self.colorRoof = color
        
    def openDoor(self):
        self.stateDoor = 'open'
    
    def closeDoor(self):
        self.stateDoor = 'close'
클래스의 기본 구조는 위 코드와 같다.
home_a = MyHome()
home_b = MyHome()
print(home_a is home_b)
클래스 정의후 home_a와 home_b 인스턴스를 생성하면, 각각 다른 object ID를 갖게 된다.
따라서, 'is' 로 동일한 레퍼런스를 바라보는지 확인해보면 'False'가 출력된다.
클래스의 사용은 아래처럼 한다.
home_a = MyHome() # 인스턴스 생성
print(home_a.colorRoof) # 인스턴스의 설정값 출력
print(home_a.stateDoor)
print('-------------------')
home_a.paintRoof('blue') # 인스턴스의 메서드 사용
home_a.openDoor()
print(home_a.colorRoof) # 메서드 사용 후 변경된 설정값 출력
print(home_a.stateDoor)
출력 결과
-------------------
클래스로 인스턴스를 생성한 후, 메서드를 사용함으로써 설정값이 변화하는 것을 볼 수 있다.
2. Constructor & Deconstructor
위 Basic에서는 class에 function들을 직접 정의했다.
사용자가 직접 정의하는 함수 외에, 파이썬에서 class에 기본적으로 제공하는 함수들이 있는데, 그것을 Constructor* 라고 칭한다.
* Constructor : class의 인스턴스를 생성하는 시점(instantiated)에 Call 되는 함수, 멤버 function이라고도 함.
Deconstructor는 인스턴스를 삭제할 때 사용하며, __del__ 로 정의한다.
예시 코드를 보자.
class MyHome:
    
    # 인스턴스 생성 시점의 초기 설정값
    colorRoof = 'red'
    stateDoor = 'closed'
    
    # Constructor
    def __init__(self, name):
        self.Name = name
    
    # Deconstructor
    def __del__(self):
    	print("Destroyed")
    
    # 인스턴스에서 사용하는 function(메서드)
    def paintRoof(self, color):
        self.colorRoof = color
        
        
# Construct
home = MyHome('SeoulHome')
print(home.Name)
print('--------------')
# Deconstruct
del home
print(home.Name)
출력 결과
코드에서 보듯이, home 인스턴스를 생성할 떄 Basic과 다르게 class에 파라미터를 입력했다.
이 파라미터는 __init__ 함수의 name 파라미터로 전달되며, 인스턴스를 생성하는 시점에 Name이라는 변수가 함께 생성된다.
del home 코드 실행시 'Destroyed' 가 출력되며, 인스턴스 삭제 후 삭제된 인스턴스를 실행하려고 하면 아래 오류가 발생한다.
{
"name": "NameError",
"message": "name 'home' is not defined",
"stack": "---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
NameError: name 'home' is not defined"
}
Module
파이썬의 모듈은 클래스를 담은 파일을 말한다. (.py 파일)
파이썬의 특정 파일에서 모듈을 불러오고, 그 모듈에 정의된 클래스를 사용할 수 있다.
이 기능으로 파이썬의 실행 코드는 가독성을 높일 수 있고, 이후 유지보수나 테스트에서도 훨씬 편리하게 작용한다.
파이썬의 A.py 파일 또는 A.ipynb 파일에서 모듈을 import 하는 코드 예시를 보자.
from lecture_module.home import The_Home as Thome
home = Thome('IPARK')
print("첫 번째 객체 생성 완료:", home.Name)
lecture_module : 모듈을 여러개 담은 패키지(디렉토리 혹은 폴더) 이름이다.
home: .home 이 모듈인 py 파일 이름이다.
The_Home 은 모듈에 정의한 클래스 이름이고, 이것에 as 를 사용해서 별칭을 정할 수 있다.
특정 파일에서 모듈 내 클래스를 불러올 때에는 위 코드처럼
< from 패키지.모듈 import 클래스 >
형식으로 사용하고, 모듈 전체를 import 할 수도, 패키지 전체를 import 할수도 있는데 그건 사용 범위에 따라 다르다.
모듈 또한 py 파일이기때문에, Work directory 어딘가엔 존재해야 한다.
현재 내 Work directory를 간단히 보면 아래와 같다.
LinearStructure
├── lecture_module
│   └── home.py
├── provided_code_week_1
│  └── practice.ipynb
practice.ipynb 파일에서 home.py 모듈을 import 해서 사용하는 것이다.
'KOOC > Linear Structure & Dynamic Programming' 카테고리의 다른 글
| Object-oriented paradigm and software design <2-2> (1) | 2023.10.03 | 
|---|---|
| Object-oriented paradigm and software design <2-1> (0) | 2023.09.23 | 
| Python Overview <1-3> (0) | 2023.09.21 | 
| Python Overview <1-2> (0) | 2023.09.21 | 
| Python Overview <1-1> (2) | 2023.09.21 |