본문 바로가기

Programming/Python 업무 자동화

4. 클래스(2) - 모듈 활용하기 1

 

 

 

클래스를 여러 개 선언하여 용도별로 사용하는 방식을 사용해, 모듈화 시키는 방식의 프로그래밍을 진행할 수 있습니다. 기본적으로 다른 파일의 코드를 사용하는 방식은 아래와 같습니다. 

 

from <py 파일 경로> import <변수 | 함수 | 클래스명>

 

 

아래와 같이 예시를 살펴 보겠습니다.

 

from my_email import Email
from my_news import News
from my_excel import Excel

m_email = Email()
m_news = News()
m_excel = Excel()

 

 

앞선 아티클에서 클래스를 임포트 하는 방식을 그대로 사용합니다. 특정 py파일을 from으로 불러오고, 그 안의 클래스를 import로 불러옵니다. 그리고 그 클래스를 ()로 호출해 변수로 리턴하는 방식입니다. 

 

그럼 위의 예제를 실제 코드로 구현하여 실습해 보겠습니다. 

 

 


 

 

 

# my_email.py

class Email:
    def __init__(self):
        self.from_email = ''
        self.to_email =''
        self.subject= ''
        self.contents = ''
    
    def send_mail(self):
        print('From: ' + self.from_email)
        print('To: ' + self.to_email)
        print('Subject: ' + self.subject)
        print('From: ' + self.from_email)
        print('Contents: ' + self.contents)

 

 

# my_news.py

class News:
    def __init__(self):
        self.news = []
    
    def find_news(self, keyword):
        for i in range(10):
            self.news.append('\'' + str(i) + 'news: ' + keyword + '\'')
        print('Collected')
        return self.news

 

 

# my_excel.py

class Excel:
    def __init__(self):
        self.excel_file = ''

    def save_to_excel(self, data):
        print('Save (' + str(len(data)) + ')data: ' + self.excel_file)

 

 

 

# test.py

from my_email import Email
from my_news import News
from my_excel import Excel

m_email = Email()
m_news = News()
m_excel = Excel()

news_list = m_news.find_news('Beenzino')

m_email.from_email = 'example@qmail.com'
m_email.to_email = 'sample@daver.com'
m_email.subject = 'Dear. '

for news in news_list:
    m_email.contents = m_email.contents + news + '\n'

m_email.send_mail()

m_excel.excel_file = 'result.xlsx'
m_excel.save_to_excel(news_list)


'''
출력
Collected
From: example@qmail.com
To: sample@daver.com
Subject: Dear.
From: example@qmail.com
Contents: '0news: Beenzino'
'1news: Beenzino'
'2news: Beenzino'
'3news: Beenzino'
'4news: Beenzino'
'5news: Beenzino'
'6news: Beenzino'
'7news: Beenzino'
'8news: Beenzino'
'9news: Beenzino'

Save (10)data: result.xlsx
'''