본문 바로가기
파이썬 (Python)/General

Python 파이썬 팩키지(Package), 모듈(Module)을 통해서, 나도 라이브러리(Library) 만들어 보자

by ★√★ 2021. 2. 17.

안녕하세요, Davey 입니다. 우리가 항상 라이브러리(Library)를 설치하고 그것을 사용하는 것만 배웠다면, 저희도 한번, 라이브러리(Library)를 만들어보는 과정을 수행하려고 합니다. 사실, 저희가 쓰는 라이브러리(Library) 만큼의 Quality는 아니고, 그냥 저희가 만든 소스를 가져오는 정도입니다. 하지만, 시작이 반이라고, 이 수준에서 출발해서, 저희의 상상력과 주변에 일어나는 일로 인해, 다른 무언가를 발명하지 않을까라는 작은 소망으로 시작해보려고 합니다. 

 

1. 팩키지(Package) 

: 하나의 모듈의 집합이라고 생각하시면 됩니다. 함수의 집합이 클래스라면, 이 클래스의 집합이 모듈이고, 그 모듈의 집합이 팩키지입니다. 별도의 폴더를 만들어서, 그 안에 코드 파일을 만들어 연결하는 집합체 입니다. "Family" 라는 이름으로 Package를 하나 만들어서 보여드리겠습니다. 

2.  모듈 (Module)

: 팩키지의 개별 파일을 모듈이라고 합니다. 모듈 안에는 class로 이뤄진 코드를 입력합니다. 즉, 클래스의 집합이 모듈입니다. 아래 snap shot을 보시면, 개별 파일이 보이 실 건데, 이게 모듈입니다.

 

 

- 단순히 폴더를 하나 만들고, 그 안에 3개의 파일(모듈)을 만들어서 보관한 상태입니다.

 

1) __init__.py 파일

- 이 Package에 이런 파일이 있다라고 애기해주는 코드 연결 파일이라고 생각하시면 더 이해가 빠르십니다. 내부 코드는 아래와 같습니다. 

 

==================================================================

from .Father import father            # Father의 class에 함수 father를 호출
from .Mother import mother        # Mother 의 class에 함수 mother를 호출

==================================================================

2) Father.py

- 실제적으로 Class와 def 함수를 가지고 있는 코드 파일입니다. 이름을, Father로 명명한 것 뿐입니다. 내부 코드는 아래와 같습니다. 

 

==================================================================

class father:                             # father 이라는 class 생성

   def say(self):                          # say 라는 함수를 선언하여, 실행 함수를 만듦.

     print("Work Hard & Study Hard")

 

==================================================================

 

 

3) Mother.py

- 실제적으로 Class와 def 함수를 가지고 있는 코드 파일입니다. 이름을, Mother로 명명한 것 뿐입니다. 내부 코드는 아래와 같습니다. 

 

 

class mother:                           # mother 이라는 class 생성

     def say(self):                       # say 라는 함수를 선언하여, 실행 함수를 만듦.

         print("Taking Care of my family is my top priority")

4) Main Python 파일

: 위의 3개의 파일을 구현하기 위한, Main Python 파일을 구현해야 합니다. 실제적으로 어떻게 위 파일들을 이용하는지에 대해서 설명 드리도록 하겠습니다. 아래 Code 참조 부탁 드립니다. 

 

==================================================================

 

from Family import Father       # Family 의 Pacakge에서 Father 이라는 모듈을 호출
from Family import Mother     # Family 의 Pacakge에서 Mother 이라는 모듈을 호출

import sys

test01 = Father.father()          # Father 이라는 모듈안에, father이라는 class를 호출
test02 = Mother.mother()       # Mother 이라는 모듈안에, mother이라는 class를 호출

test01.say()                          #  father이라는 class안에, say() 함수를 호출
test02.say()                          #  mother이라는 class안에, say() 함수를 호출

 

==================================================================

 

- 위 코드 설명이 약간 복잡하지만, package에 안에 있는 module(python file)을 부르고, 그 module 안에 있는 class를 호출하고, 그 class 안에 함수를 호출하여, 실행하는 과정입니다. 코드를 실행해보면 아래와 같은 결과 값을 얻으실 수 있습니다. 

 

 

- 그럼, Main Python 파일에 내부 함수를 이용하여, 기존 Package 함수의 값을 같이 적용한 코드를 설명 드리도록 하겠습니다. 아래 예제 코드 참조 부탁 드립니다. 

 

==========================================================================

 

from Family import Father       # Family 의 Pacakge에서 Father 이라는 모듈을 호출
from Family import Mother     # Family 의 Pacakge에서 Mother 이라는 모듈을 호출

import sys

test01 = Father.father()          # Father 이라는 모듈안에, father이라는 class를 호출
test02 = Mother.mother()       # Mother 이라는 모듈안에, mother이라는 class를 호출


class T_class01:
    def __init__(self, name01, name02):
        self.name01 = name01
        self.name02 = name02

    def say_something(self):

        print(str(self.name01) + " Said : ")
        test01.say()                                 # say_something에 test01.say() 함수를 호출
        print(str(self.name02) + " Said : ")
        test02.say()                                # say_something에 test02.say() 함수를 호출

Result01 = T_class01("아버지","어머니")   # class의 속성값을 2개 입력
Result01.say_something()                      # test01.say(), test02.say() 함수를 호출한, say_something 함수 호출 

 

==========================================================================

- 위 코드를 실행 시켜 보면 아래와 같은 결과를 보실 수 있습니다. 즉, test01.say(), test02.say() 도 Main python 함수를 통해서, 호출하여 자유 자재로 사용이 가능합니다.  

 

 

 이상입니다. 팩키지(Package), 모듈(Module)를 어떻게 설명하면, 될지 고민을 많이 하고 작성한 Posting이라, 좀 오래 걸렸습니다. 저도 처음 관련 자료를 보고, 실습을 하면서도, 약간 헷갈리는 점이 좀 많았었거든요. 그래서, 초보자나 혹시 제가 처음에 헷갈렸던 것처럼, 헷갈리지는 분들에게 최대한 자세히 설명드릴려고 노력을 했습니다. 도움이 되셨으면 하네요. 저도 이렇게 posting 작성하면서, 다시 한번 reminding하게 됩니다. 실습이 중요한거 아시죠! 그럼 여기에서 마무리하도록 하겠습니다. 항상 말씀 드리지만, 같이 성장하시죠! 감사합니다. 

 

제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다.

[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]

728x90

댓글


// 내부링크를 현재창으로 열기 // Open internal links in same tab