마음만은 한량 햄버거 메뉴
반응형
  • 호출 가능한 객체 
    • 보통 함수를 호출할 때, 아래와 같이 호출한다.

class Calculator2(object): def __init__(self, base): self.base = base


>>> cal2 = Calculator2(10)

>>> cal2.__call__(2,3)

15

    • 하지만, 인스턴스 자체를 호출하기 위해 다음과 같이 __call__ 멤버함수를 추가한다.

      • __call__ 멤버함수를 선언하면, 인스턴스 호출 시 파이썬이 자동으로 __call__멤버함수를 호출해준다.

class Calculator2(object): def __init__(self, base): self.base = base def __call__(self,x,y): return self.base + x + y


>>> cal2 = Calculator2(10)

>>> cal2(1,2)

13

    • 만일 상태값이 유지되는 함수를 사용하고 싶다면, 아래와 같이 사용하자.

class Calculator2(object): def __init__(self, base): self.base = base def __call__(self,x,y): self.base += x + y

return self.base


>>> cal2 = Calculator2(10)

>>> cal2(1,2)

13

>>> cal2(1,2)

16



    • 클래스를 이용해 객체를 호출하는 것의 장점은 다음과 같다.
      • 코드의 재사용성이 높아진다.
        • 상속을 받아 중복되는 코드를 줄이고, 필요한 부분만 재정의해 사용할 수 있다.

    • 문자열 수집

import requests from bs4 import BeautifulSoup from collections import Counter

class WordCount(object): def get_text(self, url): '문자열 수집' html = requests.get(url).text soup = BeautifulSoup(html, 'html.parser') return soup.text def get_list(self, text): '단어 리스트로 변환' return text.split()

def __call__(self, url): text = self.get_text(url) words = self.get_list(text) counter = Counter(words) return counter

    • 문자열 수집 상속 후, 재활용

import re

class KoreaWordCount(WordCount): def get_list(self, text): '한글 리스트만 반환' words = text.split() print(words) return [word for word in words if re.match(r'^[ㄱ-힣]+$', word)] # list comprehension



반응형
블로그카우, 티스토리 애드센스 강의

웹 개발자가 알려주는 수익형 블로그 고속 성장 A to Z

댓글
위쪽 화살표
로딩바