컴닥 2022. 7. 20. 14:25
반응형

믹스인.

다중 상속. 

코드 재사용의 목적.

일반적인 행동을 캡슐화 함.

믹스인 자체로는 유용하지 않음. 의존을 함.  

class BaseTokenizer:
    def __init__(self, token: str):
        self.token: str = token

    def __iter__(self):
        yield from self.token.split('-')


test = BaseTokenizer('zxcv-zcv-zcvzxsfdsdf-sfdf')

for each in test:
    print(each)

print(list(test))

 

일종의 데코레이터 같은 역할을 함.

class BaseTokenizer:
    def __init__(self, token: str):
        self.token: str = token

    def __iter__(self):
        yield from self.token.split('-')


class UpperIterableMixin:
    def __iter__(self):
        return map(str.upper, super().__iter__())


class Tokenizer(UpperIterableMixin, BaseTokenizer):
    pass


test = BaseTokenizer('zxcv-zcv-zcvzxsfdsdf-sfdf')
for each in test:
    print(each)
print(list(test))

test2 = Tokenizer('zxcv-zcv-zcvzxsfdsdf-sfdf')
for each in test2:
    print(each)
print(list(test2))
반응형