상세 컨텐츠

본문 제목

Mix-in Class

개발/python-객체지향프로그래밍(OOP)

by Matthew0633 2022. 5. 25. 23:49

본문

믹스인(mix-in)은 다른 클래스들에서 공통적으로 사용할 수 있는 메서드를 모아 놓은 클래스이다. 파이썬에서 믹스인은 자체적인 인스턴스 속성을 가지고 있지 않아 __init__ 메서드 또한 구현하지 않는다.

아래 예시에서, 문자열에서 이메일 정보를 제거하는 메소드를 가진 믹스인을 정의하였다 (TextProcessMixIn). 텍스트를 담을 수 있는 Text class 를 정의하고, 이 둘을 상속받아, 각각 뉴스기사와 SNS 텍스트를 전처리를 수행하는 class 를 정의할 수 있다 (ArticleProcessorSocialMediaProcessor). 이 둘은 상속받은 믹스인 class 의 이메일 제거 메소드를 사용할 수 있다.

class TextProcessMixIn:
    def remove_email(self, text):
        """ 
        remove email info.
        Ex. joe@yahoo.com.uk , jane.a.smith@company.net, ...
        """               
        return re.sub(r'\w+(?:[.-]?\w+)*@\w+(?:\.[A-Za-z]{2,3})+(?![A-Za-z])', text) 


class Text():
    def __init__(self, text):
        self.text = text
 
 
class ArticleProcessor(TextProcessMixIn, Text): 
    """ Preprocessor of Article Text """   
    ...

    def preprocess(self):
        ...
        ...
        text = self.remove_email(self.text)
        return text
 
 
class SocialMediaProcessor(TextProcessMixIn, Person):
    """ Preprocessor of Social Media Text """
    ...

    def preprocess(self):
        ...
        ...
        text = self.remove_email(self.text)
        return text

관련글 더보기

댓글 영역