파이썬코리아에 어떤 분이 글을 올리셨다.
눈팅하다 나라면 어떻게 할까 생각해봤는데 아래 댓글에도 있었지만 *args, **kwargs등을 이용해서 어떻게든 만들겠다.. 라고 구상만 하고 있었는데 이게 진짜 되는지 여러가지 방법론이 올라왔다.
당연히 나중에 쓸 일이 있을지 모르지만 쓰게되면 엄청나게 유용하게 보이기에 정리함.
1. multimethods 모듈이 있다고 한다. https://pypi.python.org/pypi/multimethods/
(아무리 찾아봐도 어떻게 쓰는지 잘 모르겠다.;)
2. 파이썬 3.4버전 이상에서는 https://docs.python.org/3/library/functools.html 요걸 사용할수 있다고 한다. 아래 코드는 예제.
from functools import singledispatch @singledispatch def fun(arg, verbose=False): if verbose: print("Let me just say,", end=" ") print(arg) @fun.register(int) def _(arg, verbose=False): if verbose: print("Strength in numbers, eh?", end=" ") print(arg) @fun.register(list) def _(arg, verbose=False): if verbose: print("Enumerate this:") for i, elem in enumerate(arg): print(i, elem) fun(10) fun(['rara','roro'])
3. 2번의 내용을 2버전에서 쓸수 있게 모듈 형태로 만든게 https://pypi.python.org/pypi/singledispatch#downloads 요거다.
모듈 설치후 저 코드를 그대로 가져오되 import라인만 from singledispatch import singledispatch 로 바꿔주고, print함수 끝의 end=" "같은것만 지워주면된다. 잘 작동하는걸 확인했다.
'Python > 2.7 information' 카테고리의 다른 글
in operator 탐구. (0) | 2016.06.30 |
---|---|
Iterator, Generator, Decorator (0) | 2016.06.24 |
raw 소켓 파악하기 2. (0) | 2016.03.07 |
raw 소켓 파악하기 1. (0) | 2016.03.07 |
파이썬 내부구조 이해하기. 2.x (0) | 2016.02.27 |